浮點數指令

對下面的指令先作一些說明: 
st(i):表明浮點寄存器,所說的出棧、入棧操做都是對st(i)的影響 
src,dst,dest,op等都是指指令的操做數,src表示源操做數,dst/dest表示目的操做數 
mem8,mem16,mem32,mem64,mem80等表示是內存操做數,後面的數值表示該操做數的內存位數(8位爲一字節) 
x <- y 表示將y的值放入x,例st(0) <- st(0) - st(1)表示將st(0)-st(1)的值放入浮點寄存器st(0) 
1. 數據傳遞和對常量的操做指令
指令格式
指令含義
執行的操做

FLD src
裝入實數到st(0)
st(0) <- src (mem32/mem64/mem80) 

FILD src
裝入整數到st(0) 
st(0) <- src (mem16/mem32/mem64)

FBLD src 
裝入BCD數到st(0)
st(0) <- src (mem80)

FLDZ
將0.0裝入st(0)
st(0) <- 0.0 

FLD1
將1.0裝入st(0)
st(0) <- 1.0 

FLDPI
將pi裝入st(0)
st(0) <- ?(ie, pi)

FLDL2T
將log2(10)裝入st(0)
st(0) <- log2(10)

FLDL2E
將log2(e)裝入st(0)
st(0) <- log2(e)

FLDLG2
將log10(2)裝入st(0)
st(0) <- log10(2)

FLDLN2
將loge(2)裝入st(0)
st(0) <- loge(2)

FST dest
保存實數st(0)到dest
dest <- st(0) (mem32/mem64)

FSTP dest
dest <- st(0) (mem32/mem64/mem80);而後再執行一次出棧操做

FIST dest
將st(0)以整數保存到dest
dest <- st(0) (mem32/mem64) 

FISTP dest
dest <- st(0) (mem16/mem32/mem64);而後再執行一次出棧操做

FBST dest
將st(0)以BCD保存到dest
dest <- st(0) (mem80) 

FBSTP dest 
dest<- st(0) (mem80);而後再執行一次出棧操做

2.比較指令
指令格式
指令含義
執行的操做

FCOM
實數比較
將標誌位設置爲 st(0) - st(1) 的結果標誌位

FCOM op
實數比較
將標誌位設置爲 st(0) - op (mem32/mem64)的結果標誌位 

FICOM op
和整數比較
將Flags值設置爲st(0)-op 的結果op (mem16/mem32)

FICOMP op
和整數比較
將st(0)和op比較 op(mem16/mem32)後;再執行一次出棧操做

FTST 
零檢測 
將st(0)和0.0比較

FUCOM st(i) 

比較st(0) 和st(i) [486]

FUCOMP st(i) 

比較st(0) 和st(i),而且執行一次出棧操做

FUCOMPP st(i) 

比較st(0) 和st(i),而且執行兩次出棧操做

FXAM 

Examine: Eyeball st(0) (set condition codes)

3.運算指令 
指令格式
指令含義
執行的操做

加法

FADD
加實數
st(0) <-st(0) + st(1)

FADD src

st(0) <-st(0) + src (mem32/mem64)

FADD st(i),st

st(i) <- st(i) + st(0)

FADDP st(i),st 

st(i) <- st(i) + st(0);而後執行一次出棧操做

FIADD src 
加上一個整數
st(0) <-st(0) + src (mem16/mem32)

減法 

FSUB
減去一個實數
st(0) <- st(0) - st(1)

FSUB src

st(0) <-st(0) - src (reg/mem)

FSUB st(i),st

st(i) <-st(i) - st(0)

FSUBP st(i),st

st(i) <-st(i) - st(0),而後執行一次出棧操做

FSUBR st(i),st
用一個實數來減
st(0) <- st(i) - st(0)

FSUBRP st(i),st

st(0) <- st(i) - st(0),而後執行一次出棧操做

FISUB src
減去一個整數
st(0) <- st(0) - src (mem16/mem32)

FISUBR src
用一個整數來減
st(0) <- src - st(0) (mem16/mem32)

乘法 

FMUL
乘上一個實數
st(0) <- st(0) * st(1)

FMUL st(i)

st(0) <- st(0) * st(i)

FMUL st(i),st

st(i) <- st(0) * st(i)

FMULP st(i),st

st(i) <- st(0) * st(i),而後執行一次出棧操做

FIMUL src
乘上一個整數
st(0) <- st(0) * src (mem16/mem32)

除法 

FDIV 
除以一個實數
st(0) <-st(0) /st(1)

FDIV st(i)
st(0) <- st(0) /t(i)

FDIV st(i),st
st(i) <-st(0) /st(i)

FDIVP st(i),st
st(i) <-st(0) /st(i),而後執行一次出棧操做 

FIDIV src 
除以一個整數
st(0) <- st(0) /src (mem16/mem32)

FDIVR st(i),st
用實數除
st(0) <- st(i) /st(0)
FDIVRP st(i),st
FDIVRP st(i),st
FIDIVR src 
用整數除
st(0) <- src /st(0) (mem16/mem32)

FSQRT
平方根
st(0) <- sqrt st(0)

FSCALE
2的st(0)次方
st(0) <- 2 ^ st(0)

FXTRACT
Extract exponent:
st(0) <-exponent of st(0); and gets pushed 
st(0) <-significand of st(0) 

FPREM 
取餘數
st(0) <-st(0) MOD st(1)

FPREM1
取餘數(IEEE),同FPREM,可是使用IEEE標準[486]

FRNDINT 
取整(四捨五入)
st(0) <- INT( st(0) ); depends on RC flag

FABS
求絕對值
st(0) <- ABS( st(0) ); removes sign

FCHS
改變符號位(求負數)
st(0) <-st(0)

F2XM1
計算(2 ^ x)-1
st(0) <- (2 ^ st(0)) - 1

FYL2X 
計算Y * log2(X)
st(0)爲Y;st(1)爲X;將st(0)和st(1)變爲st(0) * log2( st(1) )的值

FCOS
餘弦函數Cos
st(0) <- COS( st(0) )

FPTAN
正切函數tan
st(0) <- TAN( st(0) )

FPATAN
反正切函數arctan
st(0) <- ATAN( st(0) )

FSIN
正弦函數sin
st(0) <- SIN( st(0) )

FSINCOS
sincos函數
st(0) <-SIN( st(0) ),而且壓入st(1)
st(0) <- COS( st(0) )

FYL2XP1 
計算Y * log2(X+1)
st(0)爲Y; st(1)爲X; 將st(0)和st(1)變爲st(0) * log2( st(1)+1 )的值 

處理器控制指令

FINIT
初始化FPU

FSTSW AX
保存狀態字的值到AX
AX<- MSW

FSTSW dest
保存狀態字的值到dest
dest<-MSW (mem16)

FLDCW src
從src裝入FPU的控制字
FPU CW <-src (mem16)

FSTCW dest
將FPU的控制字保存到dest
dest<- FPU CW

FCLEX 
清除異常

FSTENV dest
保存環境到內存地址dest處 保存狀態字、控制字、標誌字和異常指針的值

FLDENV src
從內存地址src處裝入保存的環境

FSAVE dest
保存FPU的狀態到dest處 94字節

FRSTOR src
從src處裝入由FSAVE保存的FPU狀態


FINCSTP
增長FPU的棧指針值
st(6) <-st(5); st(5) <-st(4),...,st(0) <-?

FDECSTP
減小FPU的棧指針值
st(0) <-st(1); st(1) <-st(2),...,st(7) <-? 

FFREE st(i)
標誌寄存器st(i)未被使用

FNOP 
空操做,等同CPU的nop
st(0) <-st(0)

WAIT/FWAIT
同步FPU與CPU:中止CPU的運行,直到FPU完成當前操做碼

FXCH
交換指令,交換st(0)和st(1)的值
st(0) <-st(1) 
st(1) <- st(0)1.| 命令
相關文章
相關標籤/搜索