该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@呆兔子tbc 你的结论是正确的
我用 gcc -S 得到了汇编代码,中间出现了 fsqrt 指令
.file "sqrt.c"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
andl $-16, %esp
subl $32, %esp
fldl .LC0
fstpl 24(%esp)
fldl 24(%esp)
fld %st(0)
fsqrt
fucomi %st(0), %st
jp .L4
fucomip %st(0), %st
je .L5
jmp .L3
.L4:
fstp %st(0)
.L3:
fstpl (%esp)
call sqrt
fstp %st(0)
jmp .L2
.L5:
fstp %st(0)
.L2:
movl $0, %eax
leave
ret
.size main, .-main
.section .rodata
.align 8
.LC0:
.long 0
.long 1073741824
.ident "GCC: (GNU) 4.5.4"
.section .note.GNU-stack,"",@progbits
C代码
#include
int main()
{
double x = 2.0;
sqrt(x);
return 0;
}