一直在组装作业,而且大部分我都很了解组件。或者至少对于这个任务来说是足够好的。但是这个mov声明让我沮丧。我真的很感激,如果有人可以解释这个mov语句如何操作寄存器值。“mov(%ebx,%eax,4),%eax”是如何工作的?
MOV(%EBX,%eax中,4),%eax中
P.S.我无法通过基本搜索找到这种特定类型的mov语句,所以我很抱歉如果我错过了它并且在回答问题。
一直在组装作业,而且大部分我都很了解组件。或者至少对于这个任务来说是足够好的。但是这个mov声明让我沮丧。我真的很感激,如果有人可以解释这个mov语句如何操作寄存器值。“mov(%ebx,%eax,4),%eax”是如何工作的?
MOV(%EBX,%eax中,4),%eax中
P.S.我无法通过基本搜索找到这种特定类型的mov语句,所以我很抱歉如果我错过了它并且在回答问题。
完整的存储器寻址模式格式AT &变速箱总成是:
offset(base, index, width)
因此,对于您的情况:
offset = 0
base = ebx
index = eax
width = 4
含义,该指令是一样的东西:
eax = *(uint32_t *)((uint8_t *)ebx + eax * 4 + 0)
在类似C的伪代码中。
这个问题绝对是重复的。让我看看周围。你有没有检查过[docs](http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html)?他们很好地解释了这个问题。尽管如此,您可能想要翻译为英特尔格式程序集,以便在这些书籍中查找。 – 2013-02-15 17:45:23
我觉得这将是,但我很欣赏寻找合适的地方寻找帮助。 – Scalahansolo 2013-02-15 17:48:21
请参阅wikibooks上的[GAS语法寻址模式语法](http://en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax#Address_operand_syntax)以及[x86 tag wiki]中的其他链接(https://stackoverflow.com/tags/x86/info) – 2017-09-23 07:44:47