次の行があるNASMファイルがいくつかあります。
%INCLUDE "bmdev.asm"
このbmdev.asm
ファイルには、次のようなequディレクティブがあります。
b_print_newline equ 0x0000000000100040
を含むファイルはbmdev.asm
、それらのアイテムを呼び出すことができます。つまり
call b_print_newline
これをGASに変換する方法はありますか?私が直接翻訳をしようとすると、すなわち
.set b_print_newline , 0x100040
call b_print_string
それは正しいものに分解されていないようです:
callq *0x100040
NASM呼び出しは、次のように分解されます。
callq 0xfffffffffff00040
ここでの目標は、NASMではなくGASを介してBareMetalOSのバイナリを生成することです。
動作するバイナリの完全な逆アセンブル:
$ 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
この質問の(うまくいけば)より明確なバージョンを投稿しました。これを閉じます。