【发布时间】:2021-10-23 18:44:49
【问题描述】:
lea RAX var
mov [RAX] 12
如果 RAX 现在指向 'var' 变量的地址。那么 [RAX] 是什么意思。 ?
【问题讨论】:
-
如果你忽略对逗号的需求,你就不会成为一名汇编语言程序员!
lea RAX var
mov [RAX] 12
如果 RAX 现在指向 'var' 变量的地址。那么 [RAX] 是什么意思。 ?
【问题讨论】:
我假设您询问的是 Intel 风格的 x86 程序集。方括号表示“RAX 中存储的内存地址处的变量”。
所以:
mov RAX, 12
表示“将值 12 存储到 RAX 中”
mov [RAX], 12
表示“将值 12 存储在地址存储在 RAX 中的内存单元中”
【讨论】:
mov [rax], 12 是一个错误:操作数大小不明确。 You'd need mov byte [rax], 12` 只写一个可寻址的内存单元。
byte ptr 是 TASM / MASM(和 GNU .intel_syntax noprefix)。 byte 是 NASM / FASM。 stackoverflow.com/tags/intel-syntax/info / When should I use size directives in x86? / Determining when NASM can infer the size of the mov operation