带有一个参数的X86程序集中的SAR命令

时间:2012-10-10 07:17:16

标签: assembly x86 disassembly

在我正在分析的反汇编程序中,我找到了命令

sar %eax

这是做什么的?我知道带有两个参数的sar执行右移,但我只能用一个参数找不到它的意思。

该程序是为Intel x86处理器编译的。

2 个答案:

答案 0 :(得分:26)

看起来,诈骗者使用SAR EAX,1的简写,其操作码为0xD1F8。当立即数不是1,即SAR EAX,xx时,操作码为0xC1F8 xx,请参阅英特尔指令参考,卷。 2B,4-353。

答案 1 :(得分:2)

当只有一个操作数时,隐含的移位为1。

...所以

SAR %EAX表示已签名%EAX >> 1

为此,

SAR %eax = SAR $1, %eax

我已成功证明这可以分析GDB中的一些代码。