x86 AT&T | “ add”指令有什么作用? (使用内存寻址)

时间:2019-01-06 20:54:58

标签: assembly x86 gas att

我有一条简单的说明let string = "XABXAX12345BX293993AX9393B33AXAXBXBXBXAAABBX" let result = []; for (let i=0; i<string.length; i++) { if (string[i] == "A" && string[i+1] === "X") { for (let j=i; j<string.length; j++) { if (string[j] == "B" && string[j+1] === "X") { let substring = string.substring(i+1, j+1); result.push(substring) break; } } } } console.log(result);

我知道add $100, 100(%eax, %edx, 8)解析为内存地址100(%eax, %edx, 8),但我不明白的是,它是向该地址添加100还是向该地址存储的值添加。

问题

  1. 在AT&T 100+%eax+(%edx*8)中是订单。因此从技术上讲src, dest应该是目的地
  2. 现在,从技术上讲,它应该添加到地址(而不是该地址的值)上,但是这没有直观意义
  3. 我是不是说100(%eax, %edx, 8)解析为100(%eax, %edx, 8),难道不是它解析为100+%eax+(%edx*8)吗?外括号在哪里取消引用内部地址?

我已经尝试检查的资源

  1. 英特尔®64和IA-32架构软件开发人员手册第2卷(2A,2B,2C和2D):指令集参考,A-Z
  2. http://www.jagregory.com/abrash-zen-of-asm/#mov-move-copy-right-operand-into-left-operand
  3. I'm not exactly sure what this x86 Add instruction is doing
  4. x86 Assembly Memory - What does the "add" instruction do?
  5. https://docs.oracle.com/cd/E19455-01/806-3773/instructionset-19/index.html
  6. http://sourceware.org/binutils/docs-2.17/as/i386_002dMemory.html#i386_002dMemory

请注意,我还没有完全阅读所有这些内容。我不明白他们解释的方式。我要求您尽量简化和细节化

0 个答案:

没有答案