x87

    1热度

    2回答

    我有一个巨大的问题,使用fdiv !!!!我试图划分1/3所以这是我做的 .model small .stack 100h .data var1 dd 1 var2 dd 3 var3 dd 2 resultado dt 0.0 .code mov ax,@data mov ds,ax finit fild var1 fild var2 fdiv fstp res

    3热度

    2回答

    我想了解x86上的浮点运算的基本知识。我知道我们有一个专用的FPU和一个堆栈,但是我没有找到有关堆栈如何根据不同的指令行为的相关信息。 基本上,fpu寄存器的寻址使我困惑。如果我提到st(#),我是在谈论一个特定的寄存器?或者它是从栈顶偏移的? 我想我的大部分问题都可以通过一个例子来回答: 如果我有一个空的FPU堆栈,并运行: fld x fld y fmul st, st(1) 会的结果

    5热度

    2回答

    像MXCSR这样的东西的最佳设置是什么?哪种舍入模式最快?在什么处理器上?启用信号NaN是否更快,以便在计算结果为nan时获得通知,或者这会导致非NaN计算变慢? 总之,如何从紧密的内部SSE循环中获得最大速度? 任何相关的x87浮点速度建议也欢迎。

    0热度

    2回答

    我正在使用C#中的.NET 3.5应用程序,它定期调用一些传统的C++代码。我注意到,当将鼠标悬停在具有下拉列表的Infragistics UltraGrid上时,调用C++有时会导致“溢出或下溢算术操作”。我发现,在C++代码执行以下操作时,这只是发生: Word SavedWord = Default8087CW; Set8087CW(0x133f); // Disable all fpu

    3热度

    2回答

    我创建了一个应用程序来计算64位范围内的素数,所以当我试图使用sqrt函数从math.h计算64位数的平方根时我发现答案并不准确例如,当输入为~0ull答案应该是~0u但一个我得到的是0x100000000这是不正确的,所以我决定创建我自己的版本使用汇编x86的语言,看看这是一个错误,这是我的功能: inline unsigned prime_isqrt(unsigned long long va

    7热度

    2回答

    我想转换的80位扩展精度浮点数(在缓冲)翻一番。 缓冲区基本上包含x87寄存器的内容。 This question帮助我,因为我是不是所有的熟悉IEEE标准开始。 无论如何,我正努力寻找有关80位格式的低于正常(或非正规化)数字的有用信息。 我知道的是,与float32或float64不同的是,尾数中没有隐藏位(没有暗示加1.0),所以知道数是否归一化的一种方法是检查尾数中的最高位是组。这给我留下

    1热度

    1回答

    我在解码x87 FPU指令时遇到了模糊的情况。请参阅第2A卷Intel指令集手册[1]页的第3-380页中的以下说明。 D9 /0 --> FLD m32fp --> Push m32fp onto the FPU register stack. D9 C0+i --> FLD ST(i) --> Push ST(i) onto the FPU register stack. 这两条指令都有

    2热度

    1回答

    英特尔指令集参考权利要求书(重点煤矿): 的签名整数源操作数转换成双 扩展精度浮点的格式和推压值到 FPU寄存器堆栈。源操作数可以是一个字,双字, 或四字整数。它在没有舍入错误的情况下加载。源操作数的符号 被保留。该指令的操作是在非64位模式和64位模式下相同的 。 在这里你可以看到我的测试用例: % cat stackoverflow.c float uint2float(unsigned

    0热度

    1回答

    工作的浮点堆栈上做操作: fld qword [perResult] ;load st0 with perimeter fsub qword [firstSide] ;take st0 and minus firstSide, st0= perimeter - firstSide fmul qword [perResult] ;take st0 and multiply by peri

    3热度

    1回答

    我想调试我在此处发布的问题: C++ and pin tool -- very weird DOUBLE variable issue with IF statement。 我追踪了使用gdb发生奇怪行为的时刻。下图显示了我发现的内容,它显示了显示反汇编代码和浮点指针寄存器值的gdb屏幕截图。 (放大图像here) 左侧的图像显示在突出显示的FLDZ指令执行之前的屏幕截图,右侧图像在指令执行之后。