【发布时间】:2012-12-14 15:47:30
【问题描述】:
相关:what does movsbl instruction do?
在反汇编一个程序时,我发现了一个非常奇特的指令:
0x0000000000401106: movsbl (%rbx,%rax,1),%ecx
我想我知道 movsbl 做了什么:它基本上扩展了一个字节并将前导字节(符号扩展)添加到寄存器中。
但我完全不知道它在上述上下文中使用时会做什么。
我们将非常感谢您对本说明的任何启发!
【问题讨论】:
-
哪个反汇编程序?我假设
<和>应该是(和),它只是一个普通的“将地址RBX+RAX*1 处的符号扩展字节到32 位并存储在RCX 中”指令. -
注:讽刺的是;移入 ECX 的数据会导致 RCX 的高 32 位清零;所以这个指令实际上将符号从 8 位扩展到 32 位,然后零从 32 位扩展到 64 位...... :-)
标签: assembly