6.3. sp, lr 또는 pc에 액세스하는 레거시 인라인 어셈블러

RVCT v1.2 이하의 컴파일러에서는 인라인 어셈블러 코드에서(인라인 어셈블러 참조)에서 sp(r13), lr(r14) 및 pc(r15)에 액세스할 수 있었습니다. Example 6.8에서는 레거시 인라인 어셈블리 코드에서 lr을 사용할 수 있는 방법을 보여 줍니다.

Example 6.8. lr을 사용하는 레거시 인라인 어셈블리 코드

void func()
{
    int var;
    __asm
    {
        mov  var, lr  /* get the return address of func() */
    }
}

레거시 코드가 인라인 어셈블리에서 lr을 사용하는 경우 lr에 함수의 반환 주소가 반드시 포함되지는 않습니다. 예를 들어 다른 용도로 lr을 사용할 수 있는 특정 빌드 옵션이나 최적화가 있습니다. RVCT v2.0 이상의 컴파일러에서는 sp, lr 또는 pc를 다음과 같이 사용하는 경우 아래와 유사한 오류를 보고합니다.

C 또는 C++ 소스 파일 내에서 이러한 레지스터에 액세스해야 하는 경우 다음을 수행할 수 있습니다.

자세한 내용은 다음 항목을 참조하십시오.

Copyright © 2002-2007 ARM Limited. All rights reserved.ARM DUI 0205HK
Non-Confidential