对照 正确的编译器生成的汇编代码发现:
移植后编译器生成的汇编 跟 旧的编译器生成的汇编是几乎一模一样,因为两者本来就只是移植的差别,
因此,仔细对照发现区别之处在于:
新(错误的):
fmul
fsub
---------------------
旧(正确):
fmadd
解决思路:
把新汇编改成旧汇编代码即一条fmadd。结果仍然是错误的。
(因为没有把fneg fs1 fs1 位置添加正确)
但,若把旧汇编代码改为新汇编代码的样子,结果跟新汇编一样也是错的。(故原因就在于此。)
继续修改新汇编代码,把fneg位置写正确,结果就对了。(原因over)
编译器代码修改:
上面出错原因是由于没有把两条浮点指令运算,合为一条运算指令。
也就是没有select上。
在select代码部分添加上选择即可解决。