GNU ARM中get_pc()的声明在哪里?

时间:2011-11-03 18:17:02

标签: c embedded arm gnu-arm

我正在使用GNUARM C编译器构建遗留代码,并尝试解析函数的所有隐式声明。

我遇到了一些特定于ARM的函数,但找不到包含这些函数声明的头文件:

get_pc 
get_cpsr 
get_sp

我搜索了网页,只提供了包含这些功能的源代码,没有任何非标准的包含文件。

我也会接受函数声明。

由于我也将代码移植到Cygwin / Windows平台,Cygwin GNU GCC的等效声明是什么?

感谢。

2 个答案:

答案 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,你可能最好用内联汇编替换它们。