Я написал это, но это не работает (вылетает при n> 6):
section .data
one: dq 1.0
two: dq 2.0
section .text
fib:
call print_float
fld qword [two]
fcomip
ja fin
fld st0 ; copy arg
fld qword [one]
fsub
call fib ; st0=fib(n-1), st1=arg
fld st1
fld qword [two]
fsub
call fib ; st0=fib(n-2), st1=fib(n-1), st2=arg
fadd ; st0=fib(n-2)+fib(n-1), st1=arg
fstp st1 ; st0=fib(n-2)+fib(n-1)
fin:
ret
Что я делаю не так и / или как я должен это делать?
Примечание: я знаю, что есть инструкция для загрузки 1.0
.Я просто делаю это таким образом для согласованности, чтобы минимизировать подмножество x86, с которым мне приходится иметь дело.