[使用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
我的汇编代码中缺少什么?
.o
,因此地址仍然是占位符。 -c
告诉GCC不要链接,只是组装,所以-static
和-nostdlib
毫无意义。如果使用objdump -drwC rom.o
,您将在反汇编旁边看到符号重定位(-r
选项。