FXTRACT
节选标识和符号
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
D9 F4 | FXTRACT | 有效 | 有效 | 在 ST( 0) 中将值单独为 expendent 和 significand, 在 ST( 0) 中存储 expendent, 并将 significand 推到寄存器堆栈中 。 |
实测开销
正在从 arch-data 加载实测数据...
说明
将ST( 0) 寄存器中的源值分离到它的寄存器和符号中,将寄存器存储在 ST( 0) 中,并将寄存器推到寄存器堆栈中。 在这次操作后,新的顶级寄存器ST(0)包含以浮点值表示的原始符号值. 此值的标志和标志与 源操作数 中发现的相同,而引号为 3FFFH(对于一个真实的0的表示符的偏差值). ST(1)寄存器中包含以浮点值表示的操作数原生真(无偏见)表示值. (本指令执行的操作是IEEE推荐的logb(x)函数的超集.
此指令和F2XM1指令对于执行功率和射程缩放操作有用. FXTRACT指令对于将双倍扩展精度的浮点格式的数字转换为十进制表示(例如用于打印或显示)也是有用的.
如果 浮点 零分化例外(#Z)被掩盖,源操作数为零,则一个表示值的数值被存储在寄存器ST(1)和0中,并带有源操作数的标志,则存储在寄存器ST(0)中.
此指令的操作在非64位模式和64位模式中是相同的.
行动
TEMP := Significand(ST(0));
ST(0) := Exponent(ST(0));
TOP := TOP - 1;
ST(0) := TEMP;
FPU Flags Affected
C1 Set to 0 if stack underflow occurred; set to 1 if stack overflow occurred.
C0, C2, C3 Undefined.浮点 例外
#IS Stack underflow or overflow occurred.#IA Source operand is an SNaN value or unsupported format.#Z ST(0) operand is +/-0.#D Source operand is a denormal value.异常
保护模式
#NM | CR0.EM[bit 2] 或 CR0.TS[bit 3] = 1. |
#MF | 如果存在待决的x87 FPU例外. |
#UD | 如果使用 LOCK 前缀 。 |
实地址模式
| 与保护模式中的例外相同. |
虚拟 8086 模式
| 与保护模式中的例外相同. |
兼容模式
| 与保护模式中的例外相同. |
64 位模式
| 与保护模式中的例外相同. |