Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在我正在分析的反汇编程序中,我找到了命令
sar %eax
这是做什么的?我知道sar使用两个参数执行右移,但我无法找到仅使用一个参数的含义。
sar
该程序是为 Intel x86 处理器编译的。
看起来反编译器使用了速记,SAR EAX,1其操作码为0xD1F8. 当立即数不是 1 时,也就是SAR EAX,xx操作码是0xC1F8 xx,请参阅 Intel 指令参考,卷。2B,4-353。
SAR EAX,1
0xD1F8
SAR EAX,xx
0xC1F8 xx
当只有一个操作数时,隐含的移位为 1。
所以....
SAR %EAX暗示签署%EAX >> 1
SAR %EAX
%EAX >> 1
因此,
SAR %eax = SAR $1, %eax
我已经成功地证明了这一点,分析了 GDB 中的一些代码。