指令后缀和寄存器大小?

问题描述 投票:1回答:1

在x86中,指令后缀必须与所使用的寄存器匹配(更具体地说是寄存器的哪一部分)。从计算机系统的角度来看,程序员的观点是“寄存器的大小必须与指令的最后一个字符(“ b”,“ w”,“ l”或“ q”)指定的大小相匹配”。我知道说明,例如

movl (%eax), %rbx

movl $55, %rdx

是错误的,因为后缀与使用的寄存器不匹配(在第一种情况下,“ l”和%rbx不匹配,而在第二种情况下“ l”和%rdx不匹配)。但是,当有两个寄存器(两个操作数都是寄存器)时,您如何推理该要求呢?是否类似于“两个寄存器大小必须匹配”?我知道这听起来可能很愚蠢。

当指定为操作数的寄存器的大小小于后缀指定的大小时,是否也违反规定?因此movq $77, %eax是错误/非法吗?

在x86中,指令后缀必须与所使用的寄存器匹配(更具体地说是寄存器的哪一部分)。从计算机系统的角度来看,程序员的观点是“寄存器的大小必须在哪里...
assembly x86-64 att
1个回答
-3
投票
如果要将较小的寄存器复制到较大的使用指令movzx,示例
© www.soinside.com 2019 - 2024. All rights reserved.