私が分析している分解されたプログラムで、私はコマンドを見つけました
sar %eax
これは何をしますか? 2つの引数を持つsar
が右シフトを実行することは知っていますが、1つのパラメーターだけではそれが何を意味するのかわかりません。
このプログラムは、Intelx86プロセッサ用にコンパイルされています。
SAR EAX,1
のオペコードを持つ0xD1F8
の省略形を使用した逆アセンブラーのようです。イミディエートが1でない場合、別名SAR EAX,xx
、オペコードは0xC1F8 xx
です。インテルインストラクションリファレンス、Vol。 2B、4-353。
オペランドが1つしかない場合、暗黙のシフトは1です。
そう....
SAR %EAX
は署名された%EAX >> 1
を意味します
そのため、
SAR %eax = SAR $1, %eax
私はこれがGDBのいくつかのコードを分析することに成功しました。