FPTAN
部分正切
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
D9 F2 | FPTAN | 有效 | 有效 | 将 ST( 0) 替换为近似切值, 并推 1 到 FPU 堆栈 。 |
实测开销
正在从 arch-data 加载实测数据...
说明
在寄存器 ST( 0) 中计算 源操作数 的大致正切值, 将结果存储为 ST( 0) , 并将一个 1.0 推到 FPU 寄存器堆栈中 。 源操作数必须用弧度给出,并且必须小于+/-263. 该
以下表格显示计算各种类别部分正切值时获得的未显示结果:
数字,假设不存在下流。
FPTAN 结果
| ST(0) SRC | ST(0) DEST |
|---|---|
| - | * |
| -F | - F to + F |
| -0 | -0 |
| +0 | +0 |
| +F | - F to + F |
| + | * |
| 纳恩 | 纳恩 |
行动
IF ST(0) < 263
THEN
C2 := 0;
ST(0) := fptan(ST(0)); // approximation of tan
TOP := TOP - 1;
ST(0) := 1.0;
ELSE (* Source operand is out-of-range *)
C2 := 1;
FI;
FPU Flags Affected
C1 Set to 0 if stack underflow occurred; set to 1 if stack overflow occurred.
Set if result was rounded up; cleared otherwise.
C2 Set to 1 if outside range (-263 < source operand < +263); otherwise, set to 0.
C0, C3 Undefined.浮点 例外
#IS Stack underflow or overflow occurred.#IA Source operand is an SNaN value, , or unsupported format.#D Source operand is a denormal value.#U Result is too small for destination format.#P Value cannot be represented exactly in destination format.异常
保护模式
#NM | CR0.EM[bit 2] 或 CR0.TS[bit 3] = 1. |
#MF | 如果存在待决的x87 FPU例外. |
#UD | 如果使用 LOCK 前缀 。 |
实地址模式
| 与保护模式中的例外相同. |
虚拟 8086 模式
| 与保护模式中的例外相同. |
兼容模式
| 与保护模式中的例外相同. |
64 位模式
| 与保护模式中的例外相同. |