gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:54 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com