0

我想在内联汇编中使用全局变量。

asm("LDR R0,g_TsInitStackPointerAddress");

这里 g_TsInitStackPointerAddress 是一个全局变量。编译时没有显示任何错误。

但是在链接时显示以下错误

[elxr](错误)超出范围:在地址 0x10013e0 从 InitStack+0x20 (drv.o(.text)+0x1a4) 到 g_TsInitStackPointerAddress 执行重定位类型 R_ARM_POOL (4) 时,0x1001326(无符号)不适合 12 位+0x0 ((普通)+0xb6)

这里我的函数名是 InitStack,文件名是 drv。我无法理解错误。

使用的处理器:Cortex R4
编译器:Greenhills

4

1 回答 1

1

得到解决方案

__asm("g_TsInitStackPointerAddress_a: DCD g_TsInitStackPointerAddress");

在该函数中给出此语句,然后它将在内联程序集中使用该变量

于 2012-06-29T03:43:18.923 回答