我有關於上下文切換的內聯彙編指令的另一個問題。此代碼可能工作,但我不知道在100%,所以我提交此代碼的專業人士的計算器;-)使用ARM內聯彙編的上下文切換
我編譯使用gcc(無優化)的arm7TDMI。在某些時候,代碼必須執行上下文切換。
/* 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」,但在編譯的代碼,我不知道我之前的人看到任何被保存的痕跡。
我認爲代碼可能是錯的原因是,再進一個復位異常和代碼執行的最後一件事一個是上下文切換一段時間運行的程序......