Professional Documents
Culture Documents
• fdivp
• …
st0 3.1415926535897932385128089594061862 (raw 0x4000c90fdaa22168c235)
fld1 st1 1.10000002384185791015625 (raw 0x3fff8ccccd0000000000)
fldz st2 0 (raw 0x00000000000000000000)
st3 1 (raw 0x3fff8000000000000000)
flds var1 st4 0 (raw 0x00000000000000000000)
fldpi st5 0 (raw 0x00000000000000000000)
st6 0 (raw 0x00000000000000000000)
st7 0 (raw 0x00000000000000000000)
• Example:
x = ((y-z)*a) - ( a + b * c )/3.14159
x = ([y z -] * a) - ( a + b * c )/3.14159
x = [y z - a *] - ( a + b * c )/3.14159
x = [y z - a *] - ( a + [b c *])/3.14159
x = [y z - a *] - [a b c * +]/3.14159
x = [y z - a *] - [a b c * + 3.14159 /]
x = [y z - a *] [a b c * + 3.14159 /] -
x = y z - a * a b c * + 3.14159 / -
((43.65 / 22) + (76.34 * 3.1)) / ((12.43 * 6) – (140.2 / 94.21))
finit
flds value1
.section .data
fidiv value2
value1:
flds value3
.float 43.65
flds value4
value2:
fmul %st(1), %st(0)
.int 22
fadd %st(2), %st(0)
value3:
flds value5
.float 76.34
fimul value6
value4:
flds value7
.float 3.1
flds value8
value5:
fdivrp
.float 12.43
fsubr %st(1), %st(0)
value6:
fdivr %st(2), %st(0)
.int 6
subl $8, %esp
value7:
fstpl (%esp)
.float 140.2
pushl $output
value8:
call printf
.float 94.21
add $12, %esp
output:
.string "The result is %f\n"
leave
ret
.size main, .-main