GNU汇编器.long声明被清零

问题描述 投票:3回答:1

[使用GNU Binutils声明汇编代码时,例如:

.long MY_Label
.long MY_Second_label

进行汇编,没有错误,但是在进行十六进制转储时始终映射到调零的32位字符串,即使操作码和其他信息在地址空间中将它们分隔开也是如此。我正在使用:

m68k-elf-gcc -c hello.s -o rom.o -nostdlib -static && m68k-elf-objcopy -O binary rom.o rom.bin

然后将我的二进制文件转储为:

m68k-elf-objdump -D -m m68k --start-address=0x0000 --prefix-addresses -l -x -b binary --disassemble-zeroes rom.bin

我的汇编代码中缺少什么?

assembly gcc gas 68000 objcopy
1个回答
1
投票
您从未链接可重定位的.o,因此地址仍然是占位符。 -c告诉GCC不要链接,只是组装,所以-static-nostdlib毫无意义。

如果使用objdump -drwC rom.o,您将在反汇编旁边看到符号重定位(-r选项。

© www.soinside.com 2019 - 2024. All rights reserved.