x86タグwikiには、さまざまな指示に関する情報を参照するために使用できるリソースの一覧が含まれています。たとえば、IMULをhttp://www.felixcloutier.com/x86/に検索すると、http://www.felixcloutier.com/x86/IMUL.htmlにつながります。
2つのオペランドバリアントが使用され、結果が切り捨てられた場合、1つのオペランド(IMUL ebx
)が使用された場合、結果はedx:eax
になりますので、アセンブラがどのようにコンパイルするかによって異なります。
フラグについて:確かにデバッグしますが、2つのオペランドのバージョンは、結果が切り捨てられたときにCF/OFを設定します。したがって、CF = 1、OF = 0ですか? (符号なし切り捨て、符号なしオーバーフロー)。 3時間後
は後で... は、1を持っている便利でいる可能性があるため、私は実際には、DOS時代におけるBorlandから「TD」のように、いくつかの素晴らしいLinuxのデバッガを再度検索する必要があることを、私に起こりました。
もちろん、gdbは常にありますが、私はそれを気に入ることができません(特に私が個人的に好まないAT & Tの構文になっています)。
私はUbuntuリポジトリで直接利用できる「ddd」(データ表示デバッガ)を試しましたが、ちょっと古いようです(MOTIF、あなたが知っていれば、MOTIFを聞いたことがないなら、十分な年齢ではない)。 gdbに基づいています...おそらくGNUパスに行きたいと思っている人にはここで言及する価値はありますが、私はさらに検索しました。
そして、私はダウンロードを終了し、edb-debuggerをコンパイルしました。いくつかの試行の後、私はそれを古いUbuntuでコンパイルして実行しています。それはITです。好みの中でわずかなクリックだけで、 "TD"の感覚がここにあります。
私はあなたの指示を試しました。NASMのサンプルからhelloworld.asmをコンパイルしてテスト用のバイナリをバイナリにしなければならなかったので、デバッガでこれらの短い質問を直接上書きすることができます。
IMUL eax,ebx
後、CPUの状態の変更は、次のとおり
eax = 0xe0000001
CF = 1, OF = 1, SF = 1, ZF = 0, PF = 0, AF = 0, ...
IMUL ebx
後、CPUの状態の変更は、次のとおり
eax = 0xe0000001
edx = 0x00ffffff
CF = 1, OF = 1, SF = 1, ZF = 0, PF = 0, AF = 0, ...
(したがって、この場合にフラグが同じです)。
このような質問をするのを止めるには、すばらしいデバッガを入手することを強くお勧めします。1つのデバッガを稼働させることが自分の興味に沿っていなければ、私は答えに気にしません。
あなたがマニュアルを読んで検討していますか? 'imul'の – fuz
複数のオペランドの形式は、符号なし' MUL R32、R/m32'バージョンが必要とされていない理由である、どこでも高の半分を格納しないでください。 –
関連、かなり重複していない:http://stackoverflow.com/questions/4039378/x86-mul-instruction-from-vs-2008-2010は、フラグは、デバッガからちょうどどのように機能するかを学ぶのに注意してください –