我有另一个关于上下文切换的内联汇编指令的问题。此代码可能有效,但我不确定 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 被保存的痕迹。
我认为代码可能错误的原因是程序在进入重置异常之前运行了一段时间,并且代码执行的最后一件事是上下文切换......