debug程序,关于联想品牌机浮点协处理器的万般困惑

alphapaopao 2004-02-16 11:04:15
下面这段程序,在我们的任何兼容机上都能正常运行,但是在联想的机器上,频繁出现崩溃(float point devided by zero)。崩溃发生在第三行的 fld 指令。这种现象不是每次都出现,而是随机出现。也就是说,有的时候也能正常运行,但是有的时候就报告除零错。

// source code line 96: res.x=a.x-b.x;
028D355C mov eax,dword ptr [ebp+0Ch]
028D355F mov ecx,dword ptr [ebp+10h]
028D3562 fld qword ptr [eax]
028D3564 fsub qword ptr [ecx]
028D3566 fstp qword ptr [ebp-18h]

查看 eax 指向的浮点数 *(double*)eax 0.024238226856386 非常正常。
ecx 的: *(double*)ecx 0.024238226856386 也没问题。

fld 指令怎么可能除零错呢!!这里根本没有除法运算,只有加减法。艾,什么破机器。是不是浮点协处理器有问题?

浮点栈当前状态如下:
ST0 = +0.00000000000000000e+0000
ST1 = +0.00000000167336242e+2071
ST2 = +0.00000000000000000e+0000
ST3 = +0.00000000000000000e+0000
ST4 = -4.14142770149854512e+2261
ST5 = +8.14522198282385296e+2114
ST6 = +0.00000000000000000e+0000
ST7 = +0.00000000000000000e+0000

...全文
77 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧