这行对我来说不太清楚(我是Assembly的新手):

movsbl 0xffffffff(%edx,%ebx,1),%eax

我了解mov,但是movsbl对我来说是新的。在一个使用foo而不是0xffffffff(%edx,%ebx,1)的简单示例中,我将其理解为是这样(根本不确定这是正确的,只是搜索了一个相关主题):
eax = foo&0x800000ff;

我从未有过汇编行引用-1(0xffffffff),放在%eax中的信息到底来自哪里?是什么存储在:
[%edx + %ebx -1]

最佳答案

movsbl <%x, %y, 1>, %z

说,从第一个操作数(x)寻址的存储单元中读取一个字节,将该字节扩展为32位,然后将结果存储在寄存器(z)中。

是通过将x和y的值相加而形成的内存地址; 1是应用于y的乘数。

关于assembly - 请验证AT&T组装线的含义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14950330/

10-10 22:28