只是出于好奇,我正在使用编译器浏览器来查看一些简单的C++代码的汇编输出。
考虑以下示例
int main(void){
double x = -5.3;
}
汇编输出
main:
push rbp
mov rbp, rsp
movsd xmm0, QWORD PTR .LC0[rip]
movsd QWORD PTR [rbp-8], xmm0
mov eax, 0
pop rbp
ret
.LC0:
.long 858993459
.long -1072352461
我想了解如何使用
.LC0:
.long 858993459
.long -1072352461
为了取回我的-5.3
。
我猜测需要合并两个32位整数的位模式,并将其解释为双精度浮点数的位模式。但是,具体怎么做呢?我必须将该模式解释为IEEE754双精度吗?按什么顺序进行?
33333333
,第二个值的十六进制值为C0153333
。64位十六进制值为C015333333333333
,应该是-5.3。 - Michael Petch