我想编写函数(Linux,assembly,x86),从文件中读取并返回值(double)。我需要这是我对Newton-Raphson反演算法的初步猜测(我在excel中检查了这一点,对于随机值,这些值在最多8次迭代中给出了正确的结果)。我的文件是这样的:
10
0,1
100
0,01
1000
0,001
...
1E+307
1E-307
我的算法应该是这样的:
0. Load value x
1. Check if x > 1 ? (if equal, return 1)
Yes: jump 2A
No: jump 2B
2A. i = 0
3A. Check if x <= column(i) ?
No: i=i+2 jump 3A
Yes: return column(i+1) jump 4
2B. i = 1
3B. Check if x >= column(i) ?
No: i=i+2 jump 3B
Yes: return column(i+1) jump 4
4. End
这是我到目前为止所得到的:
.text
.global read
read:
pushl %ebp
movl %esp, %ebp
fldl 8(%ebp)
fld1
fcom %st(1)
fstsw %ax
sahf
fstp %st(0)
ja more
jb less
je end
more:
less:
end:
leave
ret
我有一些问题:
使用这样的文件会更好:
10 0,1
100 0,01
1000 0,001
...
1E + 307 1E-307
在汇编中读取为双精度格式是否合适(例如1E + 75将被正确读取)?
答案 0 :(得分:0)