gcc交叉汇编程序问题



我在窗口中使用cygwin构建了以"powerpc-eabi"为TARGET的gcc交叉编译器。

当组装以下代码lis r4, %hi(IMMR_OFFSET)时,我得到了以下

错误。

init/code/sfiles/init_core.s:141: Error: bad expression
init/code/sfiles/init_core.s:141: Error: syntax error; found `h', expected `,'
init/code/sfiles/init_core.s:141: Error: junk at end of line: `hi(IMMR_OFFSET)'

我想知道为什么每个类似于上面的lis指令都会出现上面的错误。

请朝这个方向帮忙。

IMMR_OFFSET的值在另一个.h file中定义如下。。。。

.equ IMMR_OFFSET, 0xF0010000

我正在使用以下命令进行组装。。。。

c:/cygwin/home/cdot/powerpc/bin/powerpc-eabi-as -mbig-endian -g --defsym _NDI_=1
 --defsym _DBGR_ON_=1 --defsym DEBUG=1 --defsym _PARAM_DEBUG_=1 --defsym _NIU_=1
 -gdwarf-2 -I init/code/hfiles -o init/build/niu_ndi_dbgr_init_core.o init/code/
sfiles/init_core.s 2>init/build/niu_ndi_dbgr_init_core.err

我有一种感觉,您的汇编源代码希望使用不同的汇编程序构建。。。

一些PPC汇编程序确实支持%hi(foo)语法,但不支持GNU汇编程序(除非有一些我不知道的文档不完整的选项)。

它也不会将r4识别为寄存器名,除非您使用-mregnames标志。

GNU汇编程序语法中的等效程序是

lis 4, IMMR_OFFSET@h

(或者如果使用-mregnameslis r4, IMMR_OFFSET@h也可以)。

类似地,%lo(foo)%ha(foo)需要分别写为foo@lfoo@ha

相关内容

  • 没有找到相关文章

最新更新