- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 GNUARM C 编译器构建遗留代码并尝试解析函数的所有隐式声明。
我遇到了一些特定于 ARM 的函数,但找不到包含这些函数声明的头文件:
get_pc
get_cpsr
get_sp
我在网上搜索了一下,只找到了包含这些函数的源代码,没有任何非标准的包含文件。
我也满足于函数声明。
由于我还将代码移植到 Cygwin/Windows 平台,Cygwin GNU GCC 的等效声明是什么?
谢谢。
最佳答案
如果你真的需要这些功能,就自己写吧,asm 比内联 asm 更容易:
.globl get_pc
get_pc:
mov r0,pc
bx lr
.globl get_sp
get_sp:
mov r0,sp
bx lr
.globl get_cpsr
get_cpsr:
mrs r0,cpsr
bx lr
至少对于 ARM 来说。如果您要移植到 x86 并需要等价物,我不得不想知道这些代码需要什么。特别是 cpsr,您可能必须更改任何使用结果的代码,因为处理器供应商/系列之间的状态寄存器几乎永远不会匹配。 x86 等效项的工作量应该大致相同,与仅编写代码(如果您了解处理器)相比,进行谷歌搜索和阅读结果所需的时间更长。
根据您的应用程序正在执行的操作,最好只注释掉调用这些函数和/或使用返回值的任何代码。我可以想象为什么会使用这些项目的几个原因,但它可能会涉及特定于体系结构的东西,而且这比仅仅移植一些寄存器读取功能更复杂。所以user786653问的是关键问题。这些功能如何使用?不是我在哪里可以找到它们,而是它们是如何使用的以及您认为您为什么需要它们。
关于c - GNU ARM 中 get_pc() 的声明在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7999922/
我正在使用 GNUARM C 编译器构建遗留代码并尝试解析函数的所有隐式声明。 我遇到了一些特定于 ARM 的函数,但找不到包含这些函数声明的头文件: get_pc get_cpsr get_sp 我
我是一名优秀的程序员,十分优秀!