1

データのみの入力ファイル、つまり次のようなものを作成したい:

 .data
 .org 0
 .equ foo, 42
 .asciz "foo"
label:
 .long 0xffffffff
 .long 0x12345678
 .byte foo
 .long label
 .long bar
 .equ bar, 'x'

対応するバイトシーケンス'f'、'o'、'o'、0、0xff、0xff、0xff、0xff、0x78、0x56、0x34、0x12、42、4、0、0、0、'x '、0、0、0。

これをGNUで(as -o foo.o -s foo.S)としてアセンブルすると、400バイト以上のELFファイルが得られます。GNU as(またはNASMまたはその他のアセンブラ)でプレーンなバイナリ表現を取得するにはどうすればよいですか?私はオプションとしてGNUを研究しましたが、役に立ちませんでした。答えが簡単になる場合は、入力形式を変更できます(つまり、より多くの異なる疑似操作を使用します)。

どんなヒントも深く感謝します!

よろしく、イェンス

4

2 に答える 2

1

MASMMASMでは、.objファイル、LINK.exeファイルにアセンブルし、ユーティリティを使用して結果のexeファイルを後処理しEXE2BINます。

TASMでは、.objファイルにアセンブルしてからTLINK、パラメーターとリンクし/t/xます。

于 2011-03-10T16:33:56.373 に答える
1

私は少し掘り下げて、 http://www.nasm.us/から取得したnasmを使用した解決策を見つけました。

元のデータの同等のディレクティブは次のようになります。

     org 0
foo  equ 42
     db "foo", 0
label:
     dd 0xffffffff
     dd 0x12345678 
     db foo
     dd label
     dd bar
bar  equ 'x'

これをで組み立てnasm -f bin -o file.bin file.Sます。出来上がり!のプレーンバイナリfile.bin。それが私を自己学習者にしていると思います:-)

于 2011-03-10T18:38:29.833 に答える