FXCH
交换登记册内容
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
D9 C8+i | FXCH ST(i) | 有效 | 有效 | 交换ST(0)和ST(i)的内容. | |
D9 C9 | FXCH | 有效 | 有效 | 交换ST(0)和ST(1)的内容. |
实测开销
正在从 arch-data 加载实测数据...
说明
交换登记册ST(0)和ST(i)的内容。 如果没有指定源操作数,则交换ST(0)和ST(1)的内容.
本指令提供了将 FPU 寄存器堆栈中的值移动到堆栈顶部 [ST( 0)] 的简单手段,这样它们就可以由那些 浮点 指令运行,这些指令只能运行在 ST( 0) 中的值上. 例如,以下指令序列从寄存器堆栈的顶端取出第三个寄存器的方根:
FXCH ST(3); FSQRT; FXCH ST(3);
此指令的操作在非64位模式和64位模式中是相同的.
行动
IF (Number-of-operands) is 1
THEN
temp := ST(0);
ST(0) := SRC;
SRC := temp;
ELSE
temp := ST(0);
ST(0) := ST(1);
ST(1) := temp;
FI;
FPU Flags Affected
C1 Set to 0.
C0, C2, C3 Undefined.浮点 例外
#IS Stack underflow occurred.异常
保护模式
#NM | CR0.EM[bit 2] 或 CR0.TS[bit 3] = 1. |
#MF | 如果存在待决的x87 FPU例外. |
#UD | 如果使用 LOCK 前缀 。 |
实地址模式
| 与保护模式中的例外相同. |
虚拟 8086 模式
| 与保护模式中的例外相同. |
兼容模式
| 与保护模式中的例外相同. |
64 位模式
| 与保护模式中的例外相同. |