mov rax,r9+rcx*2
为什么这个语法无效?这不算 mov r64,r/m64 吗?我是初学者,所以我为我的无知感到抱歉。
表达式用方括号括起来才有效
mov rax,[r9+rcx*2]
为什么?
mov rax,r9+rcx*2
这是无效语法,因为源操作数(最右边的操作数)包含汇编器在编译时无法执行的寄存器和操作,因为汇编器不知道这些寄存器包含什么值。仅在运行时才会显示这些值。
使用方括号,
[r9 + rcx * 2]
成为有效的寻址模式,该模式使用基址寄存器 (R9) 和索引寄存器 (RCX),并按因子 (2) 缩放。
mov rax, [r9 + rcx * 2]
与
mov
指令结合使用时,计算出的地址处的内存内容将返回到指定的寄存器(RAX)中。
lea rax, [r9 + rcx * 2]
与
lea
指令结合使用时,计算出的地址本身将返回到指定寄存器(RAX)中。