我正在使用GNUARM C编译器构建遗留代码,并尝试解析函数的所有隐式声明。
我遇到了一些特定于ARM的函数,但找不到包含这些函数声明的头文件:
get_pc
get_cpsr
get_sp
我搜索了网页,只提供了包含这些功能的源代码,没有任何非标准的包含文件。
我也会接受函数声明。
由于我也将代码移植到Cygwin / Windows平台,Cygwin GNU GCC的等效声明是什么?
感谢。
答案 0 :(得分:3)
如果您确实需要这些功能,请自行编写,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
至少对于手臂而言。如果你移植到x86并需要等价物,我不得不想知道代码需要什么。特别是cpsr你可能不得不改变任何使用结果的代码,因为处理器供应商/家族的状态寄存器几乎从不匹配。 x86当量应该仍然大致相同的工作量,进行谷歌搜索和阅读结果需要更长的时间,而不是只编写代码(如果你知道处理器)。
根据您的应用程序正在执行的操作,最好只注释掉调用这些函数和/或使用返回值的任何代码。我可以想象为什么会使用这些项目的一些原因,但它可能会涉及到架构特定的东西,而且只涉及移植一些寄存器读取函数。那么user786653问的是关键问题。这些功能如何使用?不是我在哪里可以找到它们但它们是如何使用的,为什么你认为你需要它们。
答案 1 :(得分:2)
你确定这些是功能吗?我对ARM不是很熟悉,但这听起来像编译内在函数对我来说。如果你要转移到GCC,你可能最好用内联汇编替换它们。