满意答案
tin658
推荐于 2017.09.15
采纳率:53% 等级:7
已帮助:310人
.file"Untitled1.c"
.text
.globl_factor
.def_factor;.scl2;.type32;.endef
_factor:
pushl%ebp
movl%esp, %ebp
pushl%edi
pushl%esi
pushl%ebx
subl$28, %esp
cmpl$1, 8(%ebp)
jneL2
movl$1, %eax
movl$0, %edx
jmpL3
L2:
movl8(%ebp), %eax
subl$1, %eax
movl%eax, (%esp)
call_factor
movl8(%ebp), %ecx
movl%ecx, %ebx
sarl$31, %ebx
movl%edx, %edi
imull%ecx, %edi
movl%ebx, %esi
imull%eax, %esi
addl%edi, %esi
mull%ecx
leal(%esi,%edx), %ecx
movl%ecx, %edx
L3:
addl$28, %esp
popl%ebx
popl%esi
popl%edi
popl%ebp
ret
.globl_get_numerator
.def_get_numerator;.scl2;.type32;.endef
_get_numerator:
pushl%ebp
movl%esp, %ebp
subl$40, %esp
movl8(%ebp), %eax
movl%eax, -16(%ebp)
movl12(%ebp), %eax
movl%eax, -12(%ebp)
fildl16(%ebp)
fstpl8(%esp)
fldl-16(%ebp)
fstpl(%esp)
call_pow
leave
ret
.globl_get_denominator
.def_get_denominator;.scl2;.type32;.endef
_get_denominator:
pushl%ebp
movl%esp, %ebp
subl$24, %esp
movl8(%ebp), %eax
movl%eax, (%esp)
call_factor
movl%eax, -16(%ebp)
movl%edx, -12(%ebp)
fildq-16(%ebp)
leave
ret
.globl_get_symbol
.def_get_symbol;.scl2;.type32;.endef
_get_symbol:
pushl%ebp
movl%esp, %ebp
movl8(%ebp), %eax
andl$1, %eax
testl%eax, %eax
jneL9
movl$1, %eax
jmpL10
L9:
movl$-1, %eax
L10:
popl%ebp
ret
.def___main;.scl2;.type32;.endef
.section .rdata,"dr"
LC2:
.ascii "please input the x:\0"
LC3:
.ascii "%lf\0"
LC6:
.ascii "sin(%lf)=%lf\12\0"
.text
.globl_main
.def_main;.scl2;.type32;.endef
_main:
pushl%ebp
movl%esp, %ebp
andl$-16, %esp
subl$96, %esp
call___main
fldz
fstpl80(%esp)
fldz
fstpl72(%esp)
movl$LC2, (%esp)
call_puts
leal56(%esp), %eax
movl%eax, 4(%esp)
movl$LC3, (%esp)
call_scanf
fldl56(%esp)
fldlLC4
fmulp%st, %st(1)
fldlLC5
fdivrp%st, %st(1)
fstpl64(%esp)
movl$0, 92(%esp)
jmpL12
L13:
fldl80(%esp)
fstpl72(%esp)
movl92(%esp), %eax
addl%eax, %eax
addl$1, %eax
movl%eax, 8(%esp)
fldl64(%esp)
fstpl(%esp)
call_get_numerator
fstpl32(%esp)
movl92(%esp), %eax
addl%eax, %eax
addl$1, %eax
movl%eax, (%esp)
call_get_denominator
fdivrl32(%esp)
fstpl32(%esp)
movl92(%esp), %eax
movl%eax, (%esp)
call_get_symbol
movl%eax, 44(%esp)
fildl44(%esp)
fmull32(%esp)
fldl80(%esp)
faddp%st, %st(1)
fstpl80(%esp)
addl$1, 92(%esp)
L12:
cmpl$3, 92(%esp)
jleL13
fldl56(%esp)
fldl80(%esp)
fstpl12(%esp)
fstpl4(%esp)
movl$LC6, (%esp)
call_printf
movl$0, %eax
leave
ret
.section .rdata,"dr"
.align 8
LC4:
.long-266631570
.long1075388921
.align 8
LC5:
.long0
.long1081507840
.ident"GCC: (tdm-2) 4.8.1"
.def_pow;.scl2;.type32;.endef
.def_puts;.scl2;.type32;.endef
.def_scanf;.scl2;.type32;.endef
.def_printf;.scl2;.type32;.endef追问: 这是什么编译器转出来的吗
追答:gcc 4.8.1 生成的。
00分享举报