linpack-pc.c 测试结果不正确

来源:互联网 发布:中科院数学院士知乎 编辑:程序博客网 时间:2024/05/10 18:53

对照 正确的编译器生成的汇编代码发现:

移植后编译器生成的汇编 跟 旧的编译器生成的汇编是几乎一模一样,因为两者本来就只是移植的差别,

因此,仔细对照发现区别之处在于:

新(错误的):

fmul

fsub

---------------------

旧(正确):

fmadd

 

解决思路:

把新汇编改成旧汇编代码即一条fmadd。结果仍然是错误的。

(因为没有把fneg fs1 fs1 位置添加正确)

但,若把旧汇编代码改为新汇编代码的样子,结果跟新汇编一样也是错的。(故原因就在于此。)

继续修改新汇编代码,把fneg位置写正确,结果就对了。(原因over)

 

编译器代码修改:

上面出错原因是由于没有把两条浮点指令运算,合为一条运算指令。

也就是没有select上。

在select代码部分添加上选择即可解决。

 

 

 

 

 

0 0
原创粉丝点击