web-dev-qa-db-ja.com

1つのパラメータを使用したX86アセンブリのSARコマンド

私が分析している分解されたプログラムで、私はコマンドを見つけました

sar %eax

これは何をしますか? 2つの引数を持つsarが右シフトを実行することは知っていますが、1つのパラメーターだけではそれが何を意味するのかわかりません。

このプログラムは、Intelx86プロセッサ用にコンパイルされています。

22
Kevin

SAR EAX,1のオペコードを持つ0xD1F8の省略形を使用した逆アセンブラーのようです。イミディエートが1でない場合、別名SAR EAX,xx、オペコードは0xC1F8 xxです。インテルインストラクションリファレンス、Vol。 2B、4-353。

26
Necrolis

オペランドが1つしかない場合、暗黙のシフトは1です。

そう....

SAR %EAXは署名された%EAX >> 1を意味します

そのため、

SAR %eax = SAR $1, %eax

私はこれがGDBのいくつかのコードを分析することに成功しました。

4
Siri