FLD m64fp指令

时间:2014-07-27 05:57:32

标签: assembly

内存中的八个连续字节包含十六进制值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

如果有人可以向我解释如何解决这个问题,我究竟能解决这个问题,&你认为答案可能是什么,因为我非常迷失。

感谢您的投入。

1 个答案:

答案 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