FISTTP

以截流存储整数

stableVMJITAOTinstruction

编码

操作码指令Op/En64 位兼容/传统说明
DF /1FISTTP m16int有效有效在m16int中存储ST(0),并带有调值.
DB /1FISTTP m32int有效有效ST(0)存储于m32int,并带有调值.
DD /1FISTTP m64int有效有效在m64int中存储ST(0),并带有调值.

实测开销

正在从 arch-data 加载实测数据...

说明

FISTTP将ST中的值转换成一个签名的整数,使用切换(chop)作为圆形模式,将结果传输到目的地,以及流行ST. FISTTP接受单词,短整数,长整数目的地.

下表显示以整数格式存储各类数字时获得的结果.

FISTTP 结果

-orDEST 格式的值太大*
F-1-I
-1<F<+10
FS+ 1+I

行动

DEST := ST;
pop ST;

受影响的旗帜

C1 is cleared; C0, C2, C3 undefined.

数字例外

无效, 堆叠无效( 上下流), 精度 。

异常

保护模式
#GP(0)如果目的地为不可写入的区段。对于非法的内存操作数有效地址,则位于CS、DS、ES、FS或GS区段。
#SS(0)用于在党卫军部分的一个非法地址. #PF(fault-code) for a 页面错误.
#AC(0)如果启用了对齐检查,并且在当前特权级别为3时会给出不对齐的内存引用.
#NM如果 CR0.EM[bit 2] = 1. 如果 CR0.TS[bit 3] = 1.
#UD如果 CPUID.01H: ECX.SSE3[0] = 0. 如果使用 LOCK 前缀。 如果 操作数 的任何部分会位于有效地址空间之外, 从 0 到 0FFFFH 。
#NM如果 CR0.EM[bit 2] = 1. 如果 CR0.TS[bit 3] = 1.
#UD如果 CPUID.01H: ECX.SSE3[0] = 0. 如果使用 LOCK 前缀. Virtual 8086 Mode 例外 GP(0) 如果 操作数 的任何部分会位于有效地址空间之外从 0 到 0FFFFH.
#NM如果 CR0.EM[bit 2] = 1. 如果 CR0.TS[bit 3] = 1.
#UD如果 CPUID.01H:ECX.SSE3[0]=0. 如果使用 LOCK 前缀. #PF(fault-code) for a 页面错误.
#AC(0)如果当前特权是3.
兼容模式
与保护模式中的例外相同.
64 位模式
#SS(0)如果引用SS部分的内存地址是非冠状的.
#GP(0)如果内存地址是非冠状的.
#NMCR0.EM[bit 2] 或 CR0.TS[bit 3] = 1.
#MF如果存在待决的x87 FPU例外. #PF(fault-code) 如果发生 页面错误.
#AC(0)如果启用对齐检查,并且在当前特权级别为3. 如果使用 LOCK 前缀时,会给出不对齐的内存引用.

来源