可以访问 Sp、Lr 和 Pc 并将它们存储在普通 C 变量中吗?...如果是,那么该怎么做。?请用c代码解释一下..
我正在使用arm gcc编译器
最佳答案
在海湾合作委员会:
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
分配给您要查看的寄存器)
关于c - 是否可以访问LR、PC等CPU寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29490016/