-2
A
回答
2
在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
分配给您正在尝试查看的寄存器)
+1
访问任何其他注册可能不是很有用。但是,如果编译器将有问题的寄存器分配为“移动”的目标,它仍然会有正确的值。 – harper
相关问题
- 1. 是否可以访问C中的32位寄存器?
- 2. 是否有可能访问
- 3. 如何访问c中的CPU寄存器?
- 4. 如何每个线程都可以有CPU寄存器
- 5. 在CPU寄存器中分配寄存器变量的标准?
- 6. 是否可以通过内联汇编访问硬件寄存器
- 7. CPU和内存(值,寄存器)
- 8. Visual Studio是否具有像Emacs寄存器那样的功能?
- 9. 是否有可能强制内联汇编代码中的特定寄存器?
- 10. ARM - 域访问控制寄存器
- 11. 访问一个SSE寄存器变量
- 12. 68k汇编:CPU是否在中断时存储状态寄存器?
- 13. C++ CPU寄存器的使用
- 14. perf-report显示CPU寄存器的值
- 15. EBX寄存器用于内存访问的模式是什么?
- 16. 有没有办法获得CDT中的PC寄存器值?Eclipse
- 17. 有没有办法让sbcl打印出CPU寄存器的值?
- 18. 你能访问vim中的Python函数的寄存器
- 19. 我可以使用我的CPU寄存器来提高速度性能吗?
- 20. ARM;性能监视器单元(PMU);访问th /内存映射寄存器;
- 21. 在c/C++中的CPU缓存中分配静态内存:是否有可能?
- 22. 什么是桌面cpu上的8位寄存器?
- 23. PC模拟器是否模拟CPU错误?
- 24. 反正有用C访问ARM的通用寄存器吗?
- 25. 是否有可能有两个C++程序访问相同的内存位置
- 26. 是否有可能有一个自定义.gitignore?只读访问?
- 27. 是否有可能使xml文件只能访问我的网站/服务器?
- 28. ARM寄存器的功能
- 29. 如何获得MIPS拱门上的当前PC寄存器值?
- 30. 如何获得Linux上的任何线程的PC寄存器?
您还没有指定了您正在使用的C编译器。 – Michael
当然,使用内联汇编或调用一个单独的汇编函数时,您可以获得所需的任何寄存器值。它们有多有意义是另一个问题 - 'pc'和'sp'不会比你从C中已经知道的更多(取一个局部变量或当前函数的地址),除了从开始一个函数'r14'可以包含_anything_,当人们想要检查'lr'时,这个函数有99次是100次,这意味着他们真的想要C编译器的'return_address'内在。 – Notlikethat
可能的副本[将调用者的lr从子例程获取到C变量 - 臂](http://stackoverflow.com/questions/18270702/get-the-callers-lr-from-subroutine-into-c-variable-arm) –