此问题在此处已有答案:
How to convert an unsigned integer to floating-point in x86 (32-bit) assembly?(3个答案)
三个月前关门了。
我需要一个x86序列来将一个64位无符号整数转换为浮点数。对于一个有符号整数来说,这是非常简单的,但是似乎没有一条指令可以对一个无符号整数进行转换。我相信你通常可以使用VCVTUSI2SD
,但是我的汇编程序无法访问它。
所以在组装方面,它可以完成以下任务:
unsigned long long x = ... ;
double y = (double)x;
1条答案
按热度按时间2w2cym1i1#
这里我假设使用Intel x86_64。在这些情况下,您通常会使用
cvtsi2sd
来处理符号https://www.felixcloutier.com/x86/cvtsi2sd
基本上,因为cvtsi2sdq取整数
signed
,所以很明显,必须将uint64_t
视为负数。基本上,这段代码的作用类似于: