FISTTP
以截流存储整数
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
DF /1 | FISTTP m16int | 有效 | 有效 | 在m16int中存储ST(0),并带有调值. | |
DB /1 | FISTTP m32int | 有效 | 有效 | ST(0)存储于m32int,并带有调值. | |
DD /1 | FISTTP m64int | 有效 | 有效 | 在m64int中存储ST(0),并带有调值. |
实测开销
正在从 arch-data 加载实测数据...
说明
FISTTP将ST中的值转换成一个签名的整数,使用切换(chop)作为圆形模式,将结果传输到目的地,以及流行ST. FISTTP接受单词,短整数,长整数目的地.
下表显示以整数格式存储各类数字时获得的结果.
FISTTP 结果
| - | or | DEST 格式的值太大 | * |
|---|---|---|---|
| F | -1 | -I | |
| -1<F< | +1 | 0 | |
| 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) | 如果内存地址是非冠状的. |
#NM | CR0.EM[bit 2] 或 CR0.TS[bit 3] = 1. |
#MF | 如果存在待决的x87 FPU例外. #PF(fault-code) 如果发生 页面错误. |
#AC(0) | 如果启用对齐检查,并且在当前特权级别为3. 如果使用 LOCK 前缀时,会给出不对齐的内存引用. |