TOP-- TOP++
顶部 ST(0) ST(1) ST(2) ST(3) ST(4) ST(5) ST(6) ST(7) 底部
指令后的注释通常是执行后的结果
push
section .data
f dd 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0
section .text
main:
fld dword [f+4*0] ; st(0)1.0
fld dword [f+4*1] ; st(0)2.0 st(1)1.0
fld1 ; st(0)1.0 st(1)2.0 st(2)1.0
pop
main:
fld dword [f+4*0]
fld dword [f+4*1]
fld1
; mov [eax],st(0)
; 指令后面带p的通常是pop的意思,fst与fstp一样取值,但是没有改变FUP寄存器
fstp dword [eax] ; st(0)2.0 st(1)1.0
;fst dword [eax] ; st(0)1.0 st(1)2.0 st(2)1.0
fld dword [f+4*2] ; st(0)3.0 st(1)2.0 st(2)1.0
常见的减减操作
main:
fld dword [f+8] ; st(0)3.0
fld1 ; st(0)1.0 st(1)3.0
; fsubp st(1), st(0)
; st(1) = st(1) - st(0)
; pop
fsubp ; st(0)2.0
See also:
- fld1 1.0
- fldz 0.0
- fmulp 乘法
- faddp 加法
- fdivp 除法
- http://ref.x86asm.net/coder32.html