У меня есть несколько файлов NASM, которые имеют строку:
%INCLUDE "bmdev.asm"
Файл bmdev.asm
имеет такие директивы equ, как:
b_print_newline equ 0x0000000000100040
Файлы, которые включают bmdev.asm
затемспособны называть эти предметы.Т.е.
call b_print_newline
Есть ли способ конвертировать это в ГАЗ?Когда я пытаюсь сделать прямой перевод, то есть
.set b_print_newline , 0x100040
call b_print_string
, кажется, что он не разбирается правильно:
callq *0x100040
Вызов NASM разбирается на:
callq 0xfffffffffff00040
Целью здесь является создание двоичных файлов для BareMetal OS через GAS вместо NASM.
Полная разборка двоичного файла, которая работает:
$ 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
Я опубликовал (надеюсь) более ясную версию этого вопроса.Закрытие.