assembly - 你如何区分 "MOV r/m64, imm32"和 MASM64 中的 "MOV r/m32, imm32"?

标签 assembly x86 x86-64 masm masm64

Intel 手册说 mov 有两种变体,涉及内存和 32 位立即操作数:

MOV r/m32, imm32
MOV r/m64, imm32

第一个复制四个字节,第二个复制八个字节,采用给定的 32 位立即数并将其符号扩展为 64 位。

在为 MASM64 编写汇编代码时,如何指定要使用哪一个?

最佳答案

@ecm 上面的评论给出了答案:

mov qword ptr [rsp+08h], 0   ; selects MOV r/m64, imm32
mov dword ptr [rsp+08h], 0   ; selects MOV r/m32, imm32

关于assembly - 你如何区分 "MOV r/m64, imm32"和 MASM64 中的 "MOV r/m32, imm32"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72498381/

相关文章:

c++ - gcc 在这里做什么来让每个线程运行一次这段代码?

c++ - 汇编语法和平台之间的关系是什么

assembly - 我用 ndisasm 看到的函数后面的汇编指令的用途是什么?

gcc - 如何更改 OpenMPI 的编译器

assembly - 段寄存器的汇编程序使用

linux nasm 程序集显示输入加 1

arrays - x86-64 汇编中的数组元素比较(AT&T 语法)

c - 将字段中的位扩展到掩码中所有(重叠+相邻)设置位的最快方法?

c - 我如何指示 MSVC 编译器使用 64 位/32 位除法而不是较慢的 128 位/64 位除法?

c - 获取每个页面错误的信号