第66部分- Linux x86 64位汇编 FPU之三高级浮点运算
除了简单的加减乘除外,还有许多浮点运算。
浮点除法例子
.section .data
fmt: .ascii "result is: %f \n"
value1:
.float 20.65
value2:
.float 3.97
.section .bss
.lcomm result, 8
.section .text
.globl _start
_start:
nop
finit;//初始化fpu
flds value2;//加载单精度值value2到st0
flds value1;//加载单精度值value1到st0,value2移到st1
loop:
fprem1;//执行简单的浮点除法
fstsw %ax;//加载fpu状态寄存器
testb $4, %ah;//检测条件代码位2(第10位),如果被设置了test会生产非零值,需要迭代时设置C2位,当迭代完成时,就清空C2位。
jnz loop
mov $60,%rax
syscall
as -g -o premtest.o premtest_att.s
ld -o premtest premtest.o