16進エディタを開き、手動でオペコードを入力して保存すると、興味があります。1をレジスタ1に移動し、2をレジスタ2に移動してから、addを呼び出すなど、プログラムが機能するようになりますか?それとも、これを自動化することで、くだらないコンパイラができますか?
編集:OSを忘れてしまったので、Mac OS XとLinuxを自由に使用でき、CPUとしてx86を使用できます。
16進エディタを開き、手動でオペコードを入力して保存すると、興味があります。1をレジスタ1に移動し、2をレジスタ2に移動してから、addを呼び出すなど、プログラムが機能するようになりますか?それとも、これを自動化することで、くだらないコンパイラができますか?
編集:OSを忘れてしまったので、Mac OS XとLinuxを自由に使用でき、CPUとしてx86を使用できます。
コメントで指摘したように、ここでは OS/プラットフォームが重要です。ほとんどのプラットフォームは、実行可能ファイルに何らかの構造を期待します (ヘッダーなどのみの場合)。たとえば、古いバージョンの Unix で使用されている a.out 形式を参照してください。
Mac OS X を使用していると指摘したように、Mach-O 形式を確認してください。
入力などは、実際のバイト(この場合は 160/161) をファイルに'A0 A1'...
入れることとは異なることに注意してください。
ファイルが適切にフォーマットされた実行可能バイナリファイルである場合のみ。たとえば、COFFおよびELF形式に関するリファレンスを参照してください。
od
特定の実行可能ファイルがどのように見えるか知りたい場合は、を使用して小さな実行可能ファイルの内容をダンプすることもできます。
バイナリに適切なファイル形式がある限り、はい。
古い DOS .com ファイルは、ディスクにシリアル化された生のプログラムです。.exe ファイルと unix ELF ファイルには、(とりわけ) 再配置情報を含む構造化された形式があります。