10.07.2015 Views

PDF version - ARM Information Center

PDF version - ARM Information Center

PDF version - ARM Information Center

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!