我创建了一个应用程序来计算64位范围内的素数,所以当我试图使用sqrt函数从math.h计算64位数的平方根时我发现答案并不准确例如,当输入为~0ull答案应该是~0u但一个我得到的是0x100000000这是不正确的,所以我决定创建我自己的版本使用汇编x86的语言,看看这是一个错误,这是我的功能: inline unsigned prime_isqrt(unsigned long long va
工作的浮点堆栈上做操作: 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
我想调试我在此处发布的问题: C++ and pin tool -- very weird DOUBLE variable issue with IF statement。 我追踪了使用gdb发生奇怪行为的时刻。下图显示了我发现的内容,它显示了显示反汇编代码和浮点指针寄存器值的gdb屏幕截图。 (放大图像here) 左侧的图像显示在突出显示的FLDZ指令执行之前的屏幕截图,右侧图像在指令执行之后。