请问一个关于浮点处理的问题
用的处理器是SPARC体系结构,想把long double类型的数据处理成128位的,用-mhard-
quad-float选项只能得到64位的处理结果,如:
执行加法指令,只能得到faddd的汇编指令,
请问,如何才能将long double类型的数据加法处理成faddq这种类型的指令?
期待大家的解答,多谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
什么编译器?
是gcc吗?
如果是gcc的话,我不知道最新的gcc是否支持硬件级的128bit
这是man gcc的结果
-msoft-quad-float
Generate output containing library calls for quad-word (long double) floating point instructions. The functions called are those specified in
the SPARC ABI. This is the default.
As of this writing, there are no SPARC implementations that have hardware support for the quad-word floating point instructions. They all
invoke a trap handler for one of these instructions, and then the trap handler emulates the effect of the instruction. Because of the trap
handler overhead, this is much slower than calling the ABI library routines. Thus the -msoft-quad-float option is the default.
2006-6-16
多谢版主cjaizss的回答.
是用的GCC,从手册上看是有选项-mhard-quad-float的,只是用了这个选项之后,还是按照64位处理的,也就是long double的变量的加还是处理成faddd,不知道如何才能够处理成faddq,因为faddq才是处理quad类型的数据的。
选项-mhard-quad-float为何没起作用?
多谢!
把示例代码和gcc 的编译命令贴上来.
a.c:
long double a = 1.0;
long double b = 2.0;
long double c = 1.0;
c = a + b;
编译命令:
gcc -mfpu -mhard-quad-float -mcpu=v8 a.c
请问:如何将c = a + b;翻译为可以使用faddq指令?我查看反汇编之后的结果是使用的faddd指令。
将a,b 的其中一个扩大到64bit的最大值,或使a+b超出64bit的最大纸看看.
[ 本帖最后由 system888net 于 2008-5-5 13:56 编辑 ]