0

下面是一些与 arm assembler 兼容的代码行,我想将它们转换为它们的 gnu 等价物。基本上我试图在裸机 cortex-r4 上运行代码,在查看互联网后,我找不到 gnu 的启动和链接器文件(对于 cortex-r4),所以最终决定将这些转换为 gnu 程序集。我之前尝试并更改了这些,但出现了一些错误(但是代码编译顺利,错误是运行时)

PRESERVE8
AREA   VECTORS, CODE, READONLY     ; Name this block of code
ENTRY
EXPORT Start
Start
IMPORT       ||Image$$ARM_LIB_STACKHEAP$$ZI$$Limit||
LDR     SP, =||Image$$ARM_LIB_STACKHEAP$$ZI$$Limit||
DCD
IF {TARGET_FPU_VFP}

如果您可以提供或指导我到启动或链接器文件,那将是一个加号

问候,

4

1 回答 1

1

这里的大多数关键字都是 ARM 编译器/链接器特定的,在 GNU C 中没有直接对应项。

代码创建了一个函数“Start”,它只是将堆栈指针 (SP) 设置为给定的文字。并指示链接器将此代码放入内存映射的只读 (RO) 区域。尽管您的代码不完整,因为似乎有一个 IF 子句。

如果您了解 ARM 代码,那么将其转换为简单的 ld 链接器脚本会相对容易。在此处阅读更多信息:
http
://www.embedded.com/design/mcus-processors-and-socs/4026075/Building-Bare-Metal-ARM-Systems-with-GNU-Part-2 http://www.embedded .com/design/mcus-processors-and-socs/4026080/Building-Bare-Metal-ARM-Systems-with-GNU-Part-3

于 2014-10-14T22:26:51.010 回答