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.

<strong>ARM</strong>과 Thumb의 인터워킹링커에서는 Thumb 명령어를 참조하는 레이블의 값을 재배치할 때 재배치된 값의 최하위 비트를 자동으로 설정합니다. Thumb 함수에 대한 절대 주소를 사용할경우에는 링커에서 이 작업이 자동으로 수행되지 않습니다. 따라서 코드에서Thumb 함수에 대한 절대 주소를 사용해야 하는 경우에는 주소에 1을 더해야 합니다 (예제 5-1 참조) .예제 5-1 Thumb 함수에 대한 절대 주소typedef int (*FN) () ;myfunc () {FN fnptrs[] = {(FN) (0x8084 + 1) , // Valid Thumb address(FN) (0x8074) // Invalid Thumb address};FN* myfunctions = fnptrs;myfunctions[0] () ; // Call OKmyfunctions[1] () ; // Call fails}5.3.2 동일한 함수의 두 가지 버전 사용각각 <strong>ARM</strong>과 Thumb용으로 컴파일된 같은 이름의 함수가 두 개 있을 수 있습니다.링커에서는 이미지에 한 기호에 대한 여러 개의 정의가 함께 있는 것을 허용합니다. 단, 각 정의가 서로 다른 프로세서 상태와 관련되어 있어야 합니다. 링커에서는 <strong>ARM</strong>/Thumb 동의어가 있는 기호를 참조할 때 다음 규칙이 적용됩니다.• <strong>ARM</strong> 상태의 기호에 대한 B, BL 또는 BLX 명령어는 <strong>ARM</strong> 정의로 확인됩니다.• Thumb 상태의 기호에 대한 B, BL 또는 BLX 명령어는 Thumb 정의로 확인됩니다.해당 심볼에 대한 다른 참조는 링커에서 발견하는 첫 번째 정의로 확인됩니다. 또한 링커에서 선택한 기호를 명시하는 경고가 생성됩니다.<strong>ARM</strong> DUI 0203IK Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 5-7Unrestricted AccessNon-Confidential

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

Saved successfully!

Ooh no, something went wrong!