컨텍스트 스위칭과 관련된 인라인 어셈블리 명령에 대한 또 다른 질문이 있습니다. 이 코드는 작동하지만 100 %에서 확신 할 수 없으므로이 코드를 stackoverflow()의 전문가에게 제출하십시오.암 인라인 어셈블리를 사용하는 컨텍스트 스위치
arm7TDMI에 대해 gcc (최적화 안 함)를 사용하여 컴파일 중입니다. 어떤 시점에서 코드는 컨텍스트 스위칭을 수행해야합니다. 내가 컴파일 된 코드를 검사 할 때
/* Software Interrupt */
/* we must save lr in case it is called from SVC mode */
#define ngARMSwi(code) __asm__("SWI %0" : : "I"(code) : "lr")
// Note : code = 0x23
는,이 결과를 얻을 :
svc 0x00000023
이 "우리는 LR을 저장해야합니다"하지만 컴파일 된 코드에서, 난 몰라 쓴 코드 내 앞에있는 사람 lr이 저장되는 흔적을 봅니다.
내가 그 코드가 잘못 될 수 있다고 생각 그 이유는 리셋 예외 코드를 실행할 수있는 마지막 일 중 하나 컨텍스트 스위치가에 가기 전에 몇 시간 동안 프로그램 실행 ...