“mov(%ebx,%eax,4),%eax”如何工作?

时间:2013-02-15 17:43:46

标签: assembly att addressing-mode

正在进行装配任务,而且大部分时间我都很了解装配。或者至少对这项任务来说已经足够了。但这个mov声明让我感到沮丧。如果有人能解释这个mov语句如何操作寄存器值,我真的很感激。

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

P.S。我无法通过基本搜索找到这种特定类型的mov语句,所以如果我错过了它并且正在提问,我会道歉。

1 个答案:

答案 0 :(得分: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的伪代码中。