PDF version - ARM Information Center
PDF version - ARM Information Center
PDF version - ARM Information Center
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
C, C++ 및 어셈블리 언어 조합4.2 어셈블리 코드에서 C 전역 변수 액세스전역 변수는 변수의 주소를 통해 간접적으로만 액세스할 수 있습니다. 전역 변수에 액세스하려면 IMPORT 지시어를 사용하여 가져오기를 수행한 후 해당 주소를 레지스터로 로드합니다. 전역 변수의 유형에 따라 로드 및 저장 명령어를 사용하여전역 변수에 액세스할 수 있습니다.예를 들어 unsigned 변수의 경우 다음 명령어를 사용합니다.• char의 경우 LDRB/STRB• short의 경우 LDRH/STRH• int의 경우 LDR/STRsigned 변수의 경우 LDRSB 및 LDRSH와 같이 부호 있는 해당 명령어를 사용합니다.8워드 미만의 작은 구조체는 LDM 및 STM 명령어를 사용하여 전체적으로 액세스할수 있습니다. 구조체의 개별 구성원은 적절한 유형의 로드 또는 저장 명령어를 통해 액세스할 수 있습니다. 구성원에 액세스하려면 구조체의 시작 부분부터 구성원까지의 오프셋을 알고 있어야 합니다.예제 4-1에서는 정수 전역 변수 globvar의 주소를 R1으로 로드하고, 해당 주소에포함된 값을 R0으로 로드하며, 이 값에 2를 더한 다음 새 값을 globvar에 다시 저장합니다.예제 4-1 전역 변수 액세스PRESERVE8AREA globals,CODE,READONLYEXPORT asmsubroutineIMPORT globvarasmsubroutineLDR R1, =globvar ; read address of globvar into R1LDR R0, [R1] ; load value of globvarADD R0, R0, #2STR R0, [R1] ; store new value into globvarBX lrEND<strong>ARM</strong> 또는 Thumb 코드에서 사용할 수 있는 명령어에 대한 자세한 내용은 어셈블러 설명서에서 4장 <strong>ARM</strong> 및 Thumb 명령어를 참조하십시오.4-4 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0203IKNon-ConfidentialUnrestricted Access