3

一直在从事装配任务,并且在大多数情况下,我对装配非常了解。或者至少对于这项任务来说足够好。但是这个 mov 声明让我绊倒了。如果有人能解释一下这个 mov 语句是如何操纵寄存器值的,我将不胜感激。

mov (%ebx,%eax,4),%eax

PS 我无法通过基本搜索找到这种特定类型的 mov 语句,所以如果我错过了它并再次提出问题,我深表歉意。

4

1 回答 1

5

AT&T 汇编中完整的内存寻址模式格式为:

offset(base, index, width)

所以对于你的情况:

offset = 0
base = ebx
index = eax
width = 4

这意味着该指令类似于:

eax = *(uint32_t *)((uint8_t *)ebx + eax * 4 + 0)

在类似 C 的伪代码中。

于 2013-02-15T17:48:12.063 回答