可以访问Sp,Lr和Pc并将它们存储在普通的C变量中吗?...如果是,那么该怎么做。请用c代码解释..
我正在使用arm gcc编译器
答案 0 :(得分:3)
在海湾合作委员会:
uint32_t some_variable;
__asm__ __volatile__ ("mov %0, lr" : "=r" (some_variable));
这告诉编译器为some_variable
分配一个寄存器(由占位符%0
表示),然后发出指令mov %0, lr
。效果是将lr
的值存储到some_variable
。
__volatile__
告诉编译器不要重新排序此指令,我认为这是你想要的。
这也适用于pc
或sp
。 (或任何其他寄存器,但使用"普通"寄存器不会非常有用 - 除其他外,编译器可能会选择将some_variable
分配给您注册的寄存器。试着看看)