在汇编中读取带有数组的文件

时间:2014-05-13 14:44:30

标签: linux file assembly x86

我想编写函数(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

我有一些问题:

  1. 可以实现吗?
  2. 使用这样的文件会更好:

    10 0,1

    100 0,01

    1000 0,001

    ...

    1E + 307 1E-307

  3. 在汇编中读取为双精度格式是否合适(例如1E + 75将被正确读取)?

  4. 我不知道如何让这个有用,所以我需要你的帮助。

1 个答案:

答案 0 :(得分:0)

  1. 这是一个愚蠢的问题。当然有可能。
  2. 分隔符是空格,换行符还是其他任何内容都无关紧要。
  3. 加载数字的最简单方法是二进制格式。当然,创建文件会更难。没有说明会直接为您解析这样的数字,您需要自己完成。除非你被迫从头开始实现这一切,否则你可以调用C库函数。
  4. 你需要提出比这更具体的问题。