アセンブリ命令をバイナリ ファイルで表示しようとしていますが、どうすればよいですか?
MOV の引数 (たとえば) がポインタなのか数値なのかを知るにはどうすればよいですか?
これは教育目的のためのものです。GDB やその他のツールがあることは知っていました。
前もって感謝します!
BFDやopcodesなどのbinutils内の多くのライブラリを利用できます。
低レベルの操作を行うためのBFD Binary File Descriptor ライブラリ。
opcodesライブラリは、機械語命令のアセンブルと逆アセンブルに使用されます。
ソースから、シミュレートされた命令を実行する前に同じデコード タスクを実行する必要があるエミュレーターへの有用な情報が見つかる場合があります。
最初に小さなサブセット、理想的には裸の 8086 をターゲットにしてから、歴史的に起こったのと同じ順序で拡張機能を追加することを強くお勧めします。これは、詳細情報を探すときに何を無視するかを決定するのに役立ちます。圧倒されないように。
MOV 操作の場合、オペランドは 2 番目のバイトである MOD-REG-REG/MEM バイトによって (最も一般的な形式で) 指定されます。オペランドは、ほとんどの場合、レジスターまたはメモリー位置 (ポインター、場合によっては「索引付けレジスター」を使用してオンザフライで構築されます) です。リテラル オペランド (数値) をソースとしてのみ受け入れる命令はごくわずかであり、それらは1979 8086 マニュアルの 180 ページの表に明確に示されています。