这是组装:
mov rdi, [r13+rax*8+0]
sub rdi, rcx
cvtsi2sd xmm0, rdi
movsd qword ptr [r11+rax*8], xmm0
cvtsi2sd xmm0, qword ptr [r14+rax*8]
movsd qword ptr [rsi+rax*8], xmm0
add rax, 1
这是 Hexrays 反编译器的输出
{
v32[v34] = (double)(LODWORD(v11[v34]) - (int)var1);
v33[v34] = (double)(int)v10[v34];
++v34;
}
问题:v10、v11 和 var1 被声明为 __int64* 和 __int64。任何想法为什么反编译器将它们转换为 32 位整数?我看到那些被转移到 64 位寄存器。这是一个 ELF64 可执行文件