6

これがどれほど難しいか信じられません。私はSPARCSolaris8で作業しており、ある種のGNU-gcc(3.4.2)と'as'アセンブラー(Sun WorkShop 6 2003/12/18コンパイラ共通6.0)があります。

とにかく、私は純粋なバイナリファイルを出力するいくつかの方法を試しました。そのような

gcc -c yadda.s

またはアセンブラのみを呼び出す

yadda.sとして

アセンブラのマニュアルページも調べましたが、最新ニュースはあまり見つかりませんでした。:( ASのマニュアルページ:http: //pastebin.com/0FSNxhq1

そのため、結果のオブジェクトファイルにまだBloatが含まれています。この先頭の50バイトのELF関連*や、アセンブラーが私の初期化に役立つと考えたもの、またはそれが考えているものは何でもしたくありません。

私が探しているのは、私のコードだけの純粋なバイナリ出力です。

前もって感謝します :)

4

2 に答える 2

9

アセンブラは実行可能コードを出力せず、オブジェクトファイルを出力します。実行可能にするには、を使用してリンクする必要がありますld。このコマンドを使用すると、出力形式を指定できます。出力形式はバイナリにすることができます(ビルドでサポートされている場合)。

as yadda.s -o yadda.o
ld yadda.o -o yadda --oformat=binary

gccを使用してこれを1行で実行できるはずです。

gcc yadda.s -o yadda -Xlinker --oformat=binary
于 2012-10-30T04:19:09.477 に答える
4

生のバイナリファイルが本当に必要な場合は、次を使用してELFファイルから生成できます。

objcopy -O binary yadda.elf yadda.bin

カーネルがファイルをロードする方法を認識できなくなるため、結果のファイルを正常に実行できないことに注意してください。

于 2012-10-30T03:41:43.373 に答える