我有一些 NASM 文件有一行:
%INCLUDE "bmdev.asm"
该bmdev.asm
文件具有 equ 指令,例如:
b_print_newline equ 0x0000000000100040
然后包含的文件bmdev.asm
可以调用这些项目。IE
call b_print_newline
有没有办法将其转换为 GAS?当我尝试进行直接翻译时,即
.set b_print_newline , 0x100040
call b_print_string
它似乎没有分解为正确的东西:
callq *0x100040
NASM 调用反汇编为:
callq 0xfffffffffff00040
这里的目标是通过 GAS 而不是 NASM为BareMetal OS生成二进制文件。
有效的二进制文件的完整反汇编:
$ objdump -D -b binary -m i386:x86-64 test-nl.app
test-nl.app: file format binary
Disassembly of section .data:
0000000000000000 <.data>:
0: e8 3b 00 f0 ff callq 0xfffffffffff00040
5: c3 retq
完全反汇编不起作用的二进制文件:
$ objdump -D -b binary -m i386:x86-64 test-nl-a.app
test-nl-a.app: file format binary
Disassembly of section .data:
0000000000000000 <.data>:
0: ff 14 25 40 00 10 00 callq *0x100040
7: c3 retq
我已经发布了这个问题的(希望)更清晰的版本。关闭这个。