对于我的gcc,它是xmm0。
这里有一个C程序:
#include <stdio.h>
#include <math.h>
int main() {
double x = tan(M_PI/4.0);
// RESULT: x=1.000000
printf ("x=%f\n", x);
return 0;
}
而这里的相应的 “GCC -S”:
.Ltext0:
.section .rodata
.LC1:
.string "x=%f\n"
.text
.globl main
.type main, @function
main:
.LFB0:
.file 1 "x.cpp"
.loc 1 4 0
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $32, %rsp
.LBB2:
.loc 1 6 0
movabsq $4607182418800017407, %rax
movq %rax, -8(%rbp)
.loc 1 8 0
movq -8(%rbp), %rax
movq %rax, -24(%rbp)
movsd -24(%rbp), %xmm0
movl $.LC1, %edi
movl $1, %eax
call printf
.loc 1 9 0
movl $0, %eax
.LBE2:
.loc 1 10 0
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
这是'xmm0'。参考文献是[x86-64 abi文档](http://www.x86-64.org/documentation_folder/abi.pdf),不知道为什么找不到它。 – Jester 2014-12-07 02:34:09
然后确定它的xmm0。 TBH,我无法阅读AT&T。看到这样一个重要的参考文献是用AT&T编写的,这让我感到很伤心。大声笑。谢谢。 – royalfinest 2014-12-07 02:38:02
在&t学习大约需要5分钟的时间。无论如何,对于它所说的“xmm0”用于返回值的部分,您甚至不需要那么多。 – Jester 2014-12-07 02:46:33