操作碼 |
指令 |
說明 |
D9 FF |
FCOS |
將 ST(0) 替換成自己的餘弦 |
計算暫存器 ST(0) 中源運算元的餘弦,結果儲存到 ST(0)。源運算元必須以弧度的形式給出,且必須在 -263 到 +263 範圍內。下表顯示計算各類數值的餘弦時得到的結果。
ST(0) SRC |
ST(0) DEST |
- |
* |
-F |
-1 到 +1 |
-0 |
+1 |
+0 |
+1 |
+F |
-1 到 +1 |
+ |
* |
NaN |
NaN |
備註:F 表示有限實數。
* 表示浮點算術運算元無效 (#IA) 異常。
如果源運算元超出可接受範圍,則設定 FPU 狀態字中的 C2 標誌,暫存器 ST(0) 中的值保持不變。此指令不會在源運算元超出範圍時觸發異常。檢查 C2 標誌是否超出範圍由程式負責。對於超出 -263 到 +263 範圍的源運算元值,可以通過減去適當的 2 的整數倍,或使用以 2 為除數的 FPREM 指令,將它們減少到指令的可接受範圍內。如需有關使用適當的值來執行這樣的減法的討論,請參閱“IA-32 英特爾(R) 體系結構軟件開發人員手冊”第 1 卷第 7 章中標題為 "Pi" 的部分。
IF |ST(0)| < 263
THEN
C2 0;
ST(0) cosine(ST(0));
ELSE (*source operand is out-of-range *)
C2 1;
FI;
C1 - 如果發生堆疊下溢,則設定為 0。如果產生不精確的結果異常 (#P),則表示取整方向:0 非向上取整;1 向上取整。如果 C2 為 1,則未定義。
C2 - 如果源運算元超出範圍 -263 到 +263,則設定為 1;否則清除為 0。
C0、C3 - 未定義。
#IS - 發生堆疊下溢。
#IA - 源運算元是 SNaN 值、∞ 或不支援的格式。
#D - 源運算元是非規格化值。
#P - 值無法按目標格式精確表示。
#NM - 如果 CR0 中的 EM 或 TS 設定為 1。
#NM - 如果 CR0 中的 EM 或 TS 設定為 1。
#NM - 如果 CR0 中的 EM 或 TS 設定為 1。