下面的C函数将类型为src_t的参数转换为类型为dst_t的返回值, 这里两种数据类型都用typedef定义:
dest_t cvt(src_t x) { dest_t y = (dest_t) x; return y; }
在x86-64上执行这段代码,假设参数x在%xmm0中,或者在寄存器%rdi的某个适当的命名部分中(即%rdi或%edi)。用一条或两条指令来完成类型转换,并把结果值复制到寄存%rax的某个适当命名部分中(整数结果),或%xmm0中(浮点结果)。给出这条或这些指令,包括源和目的寄存器。
| Ty | 指令 |
long | double | vcvtsi2sdq %rdi,%xmm0 |
double | int |
|
double | float |
|
long | float |
|
float | long |
|