内存中的八个连续字节包含十六进制值00,00,00,00,00,64,9E,40。执行FLD m64fp指令。它的参数是这八个连续字节中第一个的地址。作为FLD指令的结果,ST(0)中的值现在为:
1)1776.0
2)1945.0
3)2003.0
4)1984.0
如果有人可以向我解释如何解决这个问题,我究竟能解决这个问题,&你认为答案可能是什么,因为我非常迷失。
感谢您的投入。
答案 0 :(得分:2)
FLD将浮动加载到堆栈中。因为您正在执行FLD m64fp,所以它会将这些8字节(64位浮点)以little-endian格式加载到堆栈中。因此,为了计算出ST(0),我们可以使用以下代码:
爪哇:
System.out.println(Double.longBitsToDouble(0x409E640000000000L));
C:
uint64_t u2 = 0x409E640000000000L;
printf("%lf\n", *((double*)&u2));
哪个输出1945.0