BSWAP
字节交换
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
0F C8+rd | BSWAP r32 | O | valid* | 有效 | 反转32位寄存器的字节顺序。 |
REX.W + 0F C8+rd | BSWAP r64 | O | 有效 | 不可编码 | 反转一个64位寄存器的字节顺序。 |
操作数编码
每个模式对应上表 Op/En 列的一个取值,说明各操作数按书写顺序分别编码在指令的哪个字段,以及指令对它是读、是写还是两者兼有。
O
opcode.reglectura y escritura操作码字节自身的低三位
实测开销
正在从 arch-data 加载实测数据...
说明
反转32位或64位(指定)寄存器的字节顺序。 本指令用于将小endian值转换为大endian格式,反之亦然. 要在单词值(16位寄存器)中互换字节,请使用 XCHG 指令. BSWAP指令引用16位寄存器时,结果未定义.
在64位模式下,指令的默认操作大小为32位. 使用REX的前缀形式为REX.B,允许访问额外的注册(R8-R15). 使用REX前缀,形式为REX.W,促进运行到64位. 参见本节开头的汇总图,用于编码数据和限制.
IA-32 架构兼容性
BSWAP指令在IA-32处理器上不支持早于Intel486TM处理器家族. 对于与本指令的兼容性,软件应当包括功能等同的代码,用于比Intel486处理器家族更早在英特尔处理器上执行.
行动
TEMP := DEST
IF 64-bit mode AND OperandSize = 64
THEN
DEST[7:0] := TEMP[63:56];
DEST[15:8] := TEMP[55:48];
DEST[23:16] := TEMP[47:40];
DEST[31:24] := TEMP[39:32];
DEST[39:32] := TEMP[31:24];
DEST[47:40] := TEMP[23:16];
DEST[55:48] := TEMP[15:8];
DEST[63:56] := TEMP[7:0];
ELSE
DEST[7:0] := TEMP[31:24];
DEST[15:8] := TEMP[23:16];
DEST[23:16] := TEMP[15:8];
DEST[31:24] := TEMP[7:0];
FI;受影响的旗帜
None.
异常
实地址模式
#UD | 如果使用 LOCK 前缀 。 |
保护模式
#UD | 如果使用 LOCK 前缀 。 |
虚拟 8086 模式
#UD | 如果使用 LOCK 前缀 。 |
兼容模式
#UD | 如果使用 LOCK 前缀 。 |
64 位模式
#UD | 如果使用 LOCK 前缀 。 |