2010-06-13 22 views
5

Tôi muốn học lập trình trong assembly cho PowerPC và ARM, nhưng tôi không thể mua phần cứng thực sự cho mục đích này. Tôi đang nghĩ về việc sử dụng QEMU cho điều đó. Tuy nhiên tôi không chắc chắn nếu nó mô phỏng cả hai kiến ​​trúc đủ tốt, rằng tôi sẽ biên dịch và chạy các chương trình của tôi trong assembler bản địa trên nó?QEMU có tốt cho việc học lập trình trong assembly cho ARM và PowerPC không?

+0

Vì mục đích của Qemu là giả lập bộ vi xử lý, nó có khả năng mô phỏng những kiến ​​trúc "đủ tốt", nếu tài liệu nói để hỗ trợ chúng – ShinTakezou

+1

ARM uC rất rẻ, bạn cũng có thể mua phần cứng (và JTAG 'dongle') . Bạn có thể nhận cả hai dưới 100 đô la Mỹ (bao gồm phí giao hàng) từ eBay. Bạn phải yêu người Trung Quốc cho các thiết bị điện tử giá rẻ :) – leppie

+0

Bỏ phiếu để đóng như ý kiến ​​dựa. –

Trả lời

7

QEMU hoạt động tốt cho chương trình thử nghiệm chỉnh (tức là xem mã sẽ đúng chạy trên ARM thực tế hoặc PowerPC) nhưng nó không phải là tốt cho chương trình thử nghiệm hiệu quả: các thi đua không phải là chu kỳ chính xác và tốc độ đo với QEMU không thể tin cậy (hoặc thậm chí không tin cậy) tương quan với tốc độ trên phần cứng thực sự.

Ngoài ra, QEMU sẽ không bẫy truy cập bộ nhớ không được ký hiệu, không phải là vấn đề đối với mô phỏng PowerPC (nhưng PowerPC chấp nhận truy cập chưa được ký) nhưng có thể cho ARM (truy cập chưa được ký, ví dụ đọc từ 32 bit trong RAM từ địa chỉ không phải là bội số của 4, sẽ hoạt động tốt với QEMU nhưng sẽ kích hoạt ngoại lệ trên một bộ xử lý ARM thực sự). Ngoài những điểm này, QEMU là tốt cho việc phát triển lắp ráp trên ARM hoặc MIPS (chưa thử PowerPC, vì tôi đã tìm thấy một iBook cũ trên eBay cho điều đó, nhưng tôi đã thực hiện lắp ráp ARM và MIPS với QEMU và sau đó chạy kết quả mã trên phần cứng thực sự, và điều này làm việc). Bạn có thể mô phỏng toàn bộ hệ thống và chạy Debian trong đó (trong trường hợp trình biên dịch, trình liên kết, trình soạn thảo văn bản ... cũng sẽ chạy trong mô phỏng), hoặc sử dụng "mô phỏng chế độ người dùng" nơi thực thi ARM/MIPS được chạy trực tiếp, với một trình bao bọc chuyển đổi các cuộc gọi hệ thống thành các máy chủ cho máy chủ (điều này giả định rằng máy chủ là một máy tính chạy Linux). Sau này là thuận tiện hơn (bạn có quyền truy cập vào thư mục nhà thông thường của bạn, các công cụ lập trình có nguồn gốc ...) nhưng yêu cầu cài đặt các công cụ phát triển chéo. Xem buildroot cho điều đó (và liên kết với -static, điều này sẽ tránh được nhiều chứng đau đầu).

+2

"ví dụ: đọc một từ 32 bit trong RAM từ một địa chỉ không phải là bội số của 4, sẽ hoạt động tốt với QEMU nhưng sẽ kích hoạt ngoại lệ trên bộ xử lý ARM thực sự)." Trên thực tế, trong một số phiên bản lệnh hướng dẫn ARM, sử dụng các địa chỉ chưa được căn chỉnh sẽ xoay nội dung, mặc dù trên ARMv6 và sau đó, truy cập thông thường không được hỗ trợ (có thể cấu hình được). http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0472c/BABFDBCJ.html – rakslice

1

Vì tôi đã tìm thấy các dấu hiệu cho thấy Debian là PowerPC và cho ARM có thể chạy trên QEMU, tôi cho rằng đây không phải là vấn đề.

Các vấn đề liên quan