アセンブリニーモニックと命令の代わりに純粋なx86Intelオペコードを使用してプログラムを記述し、それをMLとLINKでコンパイルする方法はありますか。たとえば、プッシュの代わりに55を書き込もうとすると、ebpMLはそれが整数であると見なします。特別なコンパイラが必要ですか、それともオペコードプログラムをどのように記述してコンパイルしますか。
3 に答える
あなたが使用することができますdb
:
db CDh,19h
割り込み0x19を呼び出します。
アセンブラの仕事は、mnemonixをバイナリ値に変換することです。x86は長い歴史を持つCISC命令セットであるため、この変換を手動で行うのは非常に困難です。
リンクプロセスはさらに悪く、最終的な実行可能ファイルが作成されます。これは、多くの構造の作成を意味します。これを行うのははるかに難しく、手動で管理します。
本当にオペコードを使用して何かを書きたい場合は、16進エディター(または、すべてのASCIIコードを知っている場合はメモ帳:))を使用して、.COMプログラムを作成してください。より複雑なもの(.exe)はやり過ぎでしょう。
簡単に言えば、オペコードのみを使用してプログラムを作成することが可能であるということです。smilethaxが示すように、各オペコードのバイナリ値を出力するには、アセンブラまたはその他のツールが必要です。
各アセンブリメモリのオペコードを見つけるには、Intelのドキュメントを参照する必要があります。この情報は、Intel(R)Architecture Software Developer's Manual、Volume 2:Instruction SetReferenceManualに含まれています。