如何在Greenhills编译器中的内联汇编中使用全局变量?

时间:2012-06-26 05:50:15

标签: c embedded inline-assembly greenhills

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

  

asm(“LDR R0,g_TsInitStackPointerAddress”);

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

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

  

[elxr](错误)超出范围:0x1001326(无符号)不适合12   在地址处执行重定位类型R_ARM_POOL(4)时的位   0x1613e0来自InitStack + 0x20(drv.o(。text)+ 0x1a4),来自   g_TsInitStackPointerAddress + 0x0((COMMON)+ 0xb6)

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

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

1 个答案:

答案 0 :(得分:0)

获得解决方案

  

__ asm(“g_TsInitStackPointerAddress_a:DCD g_TsInitStackPointerAddress”);

在该函数中给出该语句,然后它将在内联汇编中使用该变量