これは間違った質問かもしれませんが、私はアセンブリコードのコンセプトを教えるはずのエミュレートされたCPUを使って教えられたアセンブリクラスに入っています。私たちはインテルのプログラムも書いていないので、調整しようとしています。Intel x86命令のエンコーディングを見るためのツールがありますか?
私はインテルのx86命令でそのようなことを行うことができるだろう:私たちのエミュレートされたCPUで、我々は、命令のバイトに相当したシンボル・テーブル・ファイルを生成することができましたか?
これは間違った質問かもしれませんが、私はアセンブリコードのコンセプトを教えるはずのエミュレートされたCPUを使って教えられたアセンブリクラスに入っています。私たちはインテルのプログラムも書いていないので、調整しようとしています。Intel x86命令のエンコーディングを見るためのツールがありますか?
私はインテルのx86命令でそのようなことを行うことができるだろう:私たちのエミュレートされたCPUで、我々は、命令のバイトに相当したシンボル・テーブル・ファイルを生成することができましたか?
お試しIDA.オペコードのバイナリ値を表示するオプションがあります。
編集:まあ、それは逆アセンブラです。バイナリファイルを開き、Opcodeバイト数を(Options/General /で)ゼロ以外の値に設定してください。
使用した命令のオペコードをリアルタイムで表示するIDEを探している場合は、「市場」がないため、見つけられないと思います。あなたはそれがなぜ必要なのか説明できますか?あなたは長さだけを知りたいのですか、それともそれらを学びたいのですか?長さには単純なパターンがあるので、多くのバイナリを分解することでそれを捕まえることができます。もしそれがあなたが望むオペコードだとすれば、それらの多くがあり、ルールはほとんどなく、実際にはそれを行うには役に立たない。
私は参照してくださいリストファイルを生成する必要があります。アセンブラにはオプションが必要です。 (NASMの場合は-l listfile
です)。あなたの.asmファイルに指示を入れて、そのリストを生成してください。各命令のバイナリエンコーディングが含まれている必要があります。
最初に、Intel Instruction Set Refferenceを取得するか、このリンクをhttp://siyobik.info/index.php?module=x86にしてください。ほとんどのオペコードにはいくつかのエンコーディングがあることがわかります。あなたの特定のケースでは、オペコードのビット1は方向を指定し、両方のオペランドがレジスタなので、方向を切り替えたり、レジスタコードを入れ替えることができ、結果は同じになります。通常、算術演算を登録するほとんどのレジスタにこの自由があります。エディタと六角ビューアを持っていfasm.dllに同梱のデモプログラムがあり
db 02h, E0h
db 00h, C4h
:
あなたは多分に私を指すことができるだろうこれを確認するには、このソースファイルをIDAと逆コンパイルしてみてください正しい方向?私はプログラムで.asmファイルを開いたが、次にどこに行くのか分からない。 – kevin
申し訳ありませんが、あなたはすでに私を失ってしまっています。繰り返しますが、私の先生は、インテルで完全なプログラムを書く方法を教えてくれていません。実際には、アドレッシングモードなどの概念があります。私たちのエミュレートされたCPUは、コードを実行して実行されたシンボルテーブルファイルとobjファイルを生成しました。 – kevin
基本的には、命令がどのようにコード化されるかを推測することになっています。私は規則を見ていますが、そうではありませんが、私はそれらを正しく追い求めています。 (すなわち、MOVの異なるオペコード、8ビットレジスタ/メモリ対16ビット、アドレッシングモードなどに依存する)。利用可能な種類のものがない場合、私はそれを正しく読んでくれることを願っています。しかし、ありがとう。 – kevin