2012-01-06 3 views
1

ARM 시스템 (특정 iPod touch)을 사용하고있어서 프로그램이 실제로 어셈블되는 방식에 대해 조금 이해하고 싶습니다. 인쇄 및 단계 어셈블러 지침을 gdb 사용하는 방법을 알아 냈습니다 있지만 ARM은 큰 프로그램에 대한 오버레이 지원합니다 읽었습니다. 심지어 존재하는 경우 이러한 오버레이가있는 실행 파일 자체의 위치를 ​​어떻게 든 나열 할 수있는 방법이 있습니까? 오버레이를 포함하려면 특별한 gcc 플래그가 필요합니까? 아니면 쉽게 디버깅 할 수 있도록 비활성화 할 수 있습니까?ARM의 오버레이

도움 주셔서 감사합니다.

답변

4

여기에 XY problem이라는 고전적인 예가 있지만 어쨌든 대답하려고합니다.

오버레이는 ARM 고유의 것이 아니며, 사용 가능한 메모리보다 큰 프로그램을 실행하거나 메모리 사용을 줄이는 일반적인 기술입니다. ARM, x86 또는 거의 모든 다른 플랫폼에서 구현 될 수 있습니다.

그러나 걱정하지 않아도됩니다. iOS와 Linux는 오버레이를 사용하지 않고 MMU와 가상 메모리를 사용하여 실행중인 프로그램을 관리합니다. 프로그래머로서 당신에게 투명하다. OS는 필요에 따라 코드 또는 데이터 페이지의 매핑 및 매핑 해제를 처리한다.

디버깅시 특정 문제가있는 경우 언급해야합니다. 에 대한 가상의 질문을하면라고 생각하는 것이 일반적으로 그리 큰 생산성을 내지 못합니다.

+0

디버깅하는 동안 생산적 일 수 있습니다. 단지 호기심에 찬성, 그렇습니다. –