对于下面的C代码,表达式vail〜val4分别对应程序值i、f、d和l:
double fcvt2(int *ip, float *fp, double *dp, long l) { int i=*ip; float f =*fp; double d = *dp; *ip = (int) val1; *fp = (float) val2; *dp = (double) val3; return (double) val4; }
根据该函数如下的x86-64代码,确定这个映射关系:
fcvt2: movl (%rdi),%eax vmovss %rsi),%xmm0 vcvttsd2si (%rdx),%r8d movl %r8d,(%rdi) vcvtsi2ss %eax,%xmm1,%xmm1 vmovss %xmm1,(%rsi) vcvtsi2sdq %rcx,%xmm1,%xmm1 vmovsd %xmm1,(%rdx) vunpcklps %xmm0,%xmm0,%xmm0 vcvtps2pd %xmm0,%xmm0 ret