这个movsbl指令是什么?

时间:2012-12-14 15:47:31

标签: assembly

  

可能重复:
  what does movsbl instruction do?

相关:what does movsbl instruction do?

拆开程序后,我发现了一条非常奇特的指令:

0x0000000000401106: movsbl (%rbx,%rax,1),%ecx

我想我知道movsbl的作用:它基本上扩展了一个字节并将前导符号(符号扩展)添加到寄存器中。

但我完全不知道在上述情况下使用它会起什么作用。

任何关于这条指令的亮光都会非常感激!

2 个答案:

答案 0 :(得分:2)

指令

movsbl <%rbx,%rax,1>,%ecx

从第一个操作数寻址的内存位置读取一个字节,sign将字节扩展为32位,并将结果存储在ecx寄存器中。

现在到<%rbx,%rax,1>。这仅表示通过将rbxrax的值相加而形成的存储器地址。如果您想知道,1是应用于rax的乘数。

答案 1 :(得分:0)

该指令从地址rbx+rax加载一个字节,并将符号扩展为ecx。请注意,符号扩展将源的最高位复制到目标的顶部位,因此它并不总是&#34;前导的&#34;。这样,当被解释为2的补码有符号数时,该值不会改变。