x87

    8热度

    4回答

    最近我遇到了一些麻烦,FPU堆栈溢出。我设法追踪它回到一个错误的库函数,它会在每次调用时将垃圾值推送到FPU堆栈上,并且永远不会清理它。 幸运的是,这很容易重现,而且我确切知道是什么原因引起的。我可以将一块内联ASM放入调用此例程的例程中,以便将最高值从FPU堆栈中弹出...除非我不知道该写什么。我的ASM-fu对middlin公平,但不是那强。 那么,如何摆脱x86汇编中FPU堆栈的最高值,假设

    23热度

    3回答

    我有一个奇怪的内存损坏问题。经过几个小时的调试和尝试,我想我找到了一些东西。 例如:我做一个简单的字符串赋值: sTest := 'SET LOCK_TIMEOUT '; 但是,结果有时会: sTest = 'SET LOCK'#0'TIMEOUT ' 所以,_得到由0字节替换。 在System.Move函数中,当它使用FPU堆栈(fild,fistp)进行快速存储器复制时(在9到32字节

    2热度

    2回答

    我对x87 instructions用于处理x86汇编中的浮点数有点熟悉。但是,我在某处读到这些很少用到的地方。 (并且在64位Windows驱动程序中不允许)[1] 如果是这样的话,应该使用什么指令?我看到了一些关于上证所的信息,但除非我误解了这些说明,否则这些说明会在近期增加,并且不会在旧芯片上提供。 (像奔腾II等) 什么指令应该我正在使用?

    4热度

    2回答

    假设我有两个浮点数,即x和y,它们的值非常接近。 在计算机上可以表现出离散数量的浮点数,所以我们可以按升序列举它们:f_1, f_2, f_3, ...。我希望能够找到在此列表中的x和y的距离(即它们是1,2,3,...还是分开n不连续的步骤?) 是否有可能只用算术运算做到这一点(+-*/ ),而不是看二进制表示?我主要感兴趣的是如何在x86上工作。 是下面的近似正确的,假定y > x和x和y都只