我对大会有点生疏。我想问你们一些问题。
- 这些汇编指令在 NASM 中有效吗?
- 有什么区别,我们应该什么时候使用它们?
mov EAX, EBX
对比
mov EAX, [EBX]
我对大会有点生疏。我想问你们一些问题。
mov EAX, EBX
对比
mov EAX, [EBX]
mov EAX, EBX
将 EBX 的值移动到 EAX 中,而
mov EAX, [EBX]
将 EBX 中的地址值(因此 EBX 必须包含有效地址,否则会出现分段错误)到 EAX 中。
你会读C吗?如果是这样,那么给定先前的定义int a, b;
,第一条指令或多或少等同于
a = b;
然而,给定先前的定义int a, *b;
,第二条指令或多或少等同于
a = *b;
除了 EAX 和 EBX 是寄存器而不是堆栈驻留变量。
可以说的还有很多很多,但前面的内容给了你这个想法。
(顺便说一下,NASM——我承认在过去五年中没有使用过——与 GNU 的汇编器相比,它以相反的顺序呈现参数。NASM 将目标寄存器放在左边,源寄存器放在右边,而 GNU反之亦然。与 GNU 的“AT&T 语法”相比,NASM 的约定也称为“英特尔语法”。)