ADD( const, memory)
是最混乱的,这个代码序列看起来像下面这样:
- 从内存中获取指令字节。
- 更新 EIP 以指向下一个字节。
- 解码指令。
- 如果需要,获取一个位移以用于有效地址计算
- 如果需要,更新 EIP 以指向位移值之外。
- 从内存中获取常量值并将其发送到 ALU。
- 更新 EIP 以指向超出常量的值(在内存中的下一条指令处)。
- 从内存中获取源操作数的值并将其发送到 ALU。
- 指示 ALU 添加值。
- 将结果存储回内存操作数。
- 用加法运算的结果更新标志寄存器。
这是来自汇编语言的艺术书。为什么 EIP 更新了 2 次甚至 3 次?