1. 程式人生 > >FPU 操作浮點數

FPU 操作浮點數

.section .data
value1:
     .int 40
value2:
     .float 92.4405
value3:
     .double 221.440321
.section .bss
   .lcomm intl ,4
   .lcomm control ,2
   .lcomm status ,2
   .lcomm result ,4
.section .text
.globl _start
_start:
     nop
     finit      #初始化FPU
     fstcw control    
     fstsw status
     filds value1    #把一個雙整數值載入到FPU暫存器堆疊中去
     fists intl      #獲取暫存器堆疊頂部的值,並且把它放置在目標位置(被設定為記憶體位置intl)
     flds value2     #載入記憶體位置value2 中的單精度浮點值
     fldl value3     #載入記憶體位置value3 中的單精度浮點值
     fst  %st(4)     #fst指令用於把st0 暫存器的資料傳送到另一個fpu暫存器
     fxch  %st(1)    #將st1暫存器與st0暫存器進行交換
     fstps result    #值從堆疊中(st0)刪除,並且其它值向上移動
     
     movl $1,%eax
     movl $0,%ebx
     int $0x80