2010-06-13 2 views
5

PowerPC 및 ARM 용 어셈블러에서 프로그래밍을 배우고 싶지만 실제 하드웨어를 구입할 수는 없습니다. QEMU를 사용하려고 생각하고 있습니다. 그러나 두 아키텍처를 충분히 에뮬레이트 할 수 있을지 잘 모르겠다. 네이티브 어셈블러에서 내 프로그램을 컴파일하고 실행할 수 있습니까?QEMU는 ARM 및 PowerPC 용 어셈블러에서 프로그래밍 학습에 적합합니까?

+0

Qemu의 목표는 프로세서 에뮬레이터이기 때문에 의사가 지원할 것이라고 말하는 경우 "충분히 잘"아키텍처를 에뮬레이트 할 가능성이 높습니다 – ShinTakezou

+1

ARM uC는 매우 저렴하므로 하드웨어 (및 JTAG '동글')를 구입할 수도 있습니다. . 둘 다 eBay에서 US $ 100 (배송료 포함) 이하로 구입할 수 있습니다. 당신은 싼 전자 제품을 위해 중국을 사랑해야만합니다 :) – leppie

+0

의견을 근거로 투표를 마감했습니다. –

답변

7

QEMU 테스트 프로그램을 위해 잘 작동 보정 (즉, 코드가 제대로 실제 ARM 또는 파워 PC에서 실행할지 여부)하지만 테스트 프로그램에 대한 좋지 않은 효율성 : 에뮬레이션 사이클 정확하지 않습니다 및 속도 측정 진정한 하드웨어의 속도와 QEMU를 신뢰성있게 (또는 신뢰할 수 없게) 상관시킬 수는 없습니다.

또한 QEMU는 정렬되지 않은 메모리 액세스를 트랩하지 않습니다. PowerPC 에뮬레이션에는 문제가되지 않지만 (PowerPC는 정렬되지 않은 액세스를 허용 함) ARM (정렬되지 않은 액세스, 예 : RAM에서 32 비트 워드를 주소가 4의 배수가 아닌 경우 QEMU에서 정상적으로 작동하지만 실제 ARM 프로세서에서는 예외가 트리거됩니다.

QEMU는 ARM 또는 MIPS에서 어셈블리를 개발할 때 적합합니다 (PowerPC를 사용해 본 적이 없지만 이베이에서 이전 iBook을 발견했기 때문에 QEMU로 ARM 및 MIPS 어셈블리를 수행 한 다음 실행 함 진정한 하드웨어의 결과 코드, 그리고 이것이 효과가있었습니다). 전체 시스템을 에뮬레이션하고 데비안을 실행할 수 있습니다 (이 경우 컴파일러, 링커, 텍스트 편집기 ...도 에뮬레이션으로 실행됩니다). 또는 ARM/MIPS 실행 파일이 실행되는 "사용자 모드 에뮬레이션"을 사용하십시오 시스템 호출을 호스트 PC 용으로 변환하는 래퍼 (이것은 호스트가 리눅스를 실행하는 PC라고 가정 함)와 직접적으로 연결됩니다. 후자는 더 편리합니다 (일반 홈 디렉토리에 액세스 할 수 있고 프로그래밍 도구가 기본이지만 ...) 크로스 개발 도구를 설치해야합니다. 그것에 대해 buildroot을 참조하십시오 (많은 두통을 피할 수있는 -static과의 링크).

+2

"예를 들어 RAM의 32 비트 워드를 4의 배수가 아닌 주소에서 읽는 것은 QEMU에서 정상적으로 작동하지만 실제 ARM 프로세서에서는 예외를 트리거합니다.) 실제로 일부 ARM 명령어 세트 버전에서는 정렬되지 않은 주소를 사용하여 내용을 회전하지만 ARMv6 이상에서는 일반 정렬되지 않은 액세스가 지원됩니다 (구성 가능). http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0472c/BABFDBCJ.html – rakslice

1

데비안이 PowerPC이고 ARM가 QEMU에서 실행될 수 있다는 징후가 발견되었으므로이 문제가 발생하지 않을 것으로 생각됩니다.

관련 문제