首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FPU IA-32 SIGFPE,算术异常

FPU IA-32 SIGFPE,算术异常
EN

Stack Overflow用户
提问于 2013-06-14 09:41:48
回答 1查看 394关注 0票数 1

我对下面的代码有问题。它是IA-32架构上的GAS asm语法。它在fsqrt指令之后产生算术异常。SetDouble是值为0x0200int类型,input是浮点数。我用-m32 flag编译了这段代码,使用的是gcc。谁能指出我哪里搞错了?

代码语言:javascript
复制
pushl %ebp
movl %esp,%ebp
finit                   
fldcw SetDouble          
fld input               
fld input
fmulp
fld1                    
faddp                   
fsqrt                   
fld1
fxch                    
fsubp
fstp output
mov %ebp,%esp 
pop %ebp
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-14 18:18:11

将控制字设置为0x200会将FPU切换为双精度,并取消屏蔽所有异常,包括精度异常。因此,对于大多数输入(可能是除0以外的所有输入),fsqrt将引发此异常,这就是您所看到的。

您可以将控制字设置为0x220,以屏蔽精度异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17099872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档