21,458
社区成员
发帖
与我相关
我的任务
分享
mov eax, DWORD PTR _n$[ebp]
add eax, 1
push eax
mov ecx, DWORD PTR _x$[ebp+4]
push ecx
mov edx, DWORD PTR _x$[ebp]
push edx
call ?e@@YANNH@Z ; e
add esp, 12 ; 0000000cH
fmul QWORD PTR -8+[ebp]
$L585:
; 6 : }
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0
?e@@YANNH@Z ENDP ; e
_TEXT ENDS
PUBLIC _main
PUBLIC ??_C@_05IKCD@?$CFlf?$CFd?$AA@ ; `string'
PUBLIC ??_C@_0M@EFMC@?$CFlg?$FO?$CFd?$DN?$CFlg?6?$AA@ ; `string'
EXTRN __imp__printf:NEAR
EXTRN __imp__scanf:NEAR
; COMDAT ??_C@_05IKCD@?$CFlf?$CFd?$AA@
; File c:\tmp\tmp\err.cpp
CONST SEGMENT
??_C@_05IKCD@?$CFlf?$CFd?$AA@ DB '%lf%d', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0M@EFMC@?$CFlg?$FO?$CFd?$DN?$CFlg?6?$AA@
CONST SEGMENT
??_C@_0M@EFMC@?$CFlg?$FO?$CFd?$DN?$CFlg?6?$AA@ DB '%lg^%d=%lg', 0aH, 00H ; `string'
CONST ENDS
; COMDAT _main
_TEXT SEGMENT
_x$ = -8
_xn$ = -16
_n$ = -20
_main PROC NEAR ; COMDAT
; 7 : int main() {
push ebp
mov ebp, esp
sub esp, 84 ; 00000054H
; File c:\tmp\tmp\err.cpp
CONST SEGMENT
__real@8@3fff8000000000000000 DQ 03ff0000000000000r ; 1
CONST ENDS
; COMDAT ?e@@YANNH@Z
_TEXT SEGMENT
_x$ = 8
_n$ = 16
?e@@YANNH@Z PROC NEAR ; e, COMDAT
; 2 : double e(double x,int n) {
push ebp
mov ebp, esp
sub esp, 72 ; 00000048H
push ebx
push esi
push edi
; 3 : if (n==0) return 1.0;
cmp DWORD PTR _n$[ebp], 0
jne SHORT $L583
fld QWORD PTR __real@8@3fff8000000000000000
jmp SHORT $L585
$L583:
; 4 : if (n>0) return x*e(x,n-1);
cmp DWORD PTR _n$[ebp], 0
jle SHORT $L584
mov eax, DWORD PTR _n$[ebp]
sub eax, 1
push eax
mov ecx, DWORD PTR _x$[ebp+4]
push ecx
mov edx, DWORD PTR _x$[ebp]
push edx
call ?e@@YANNH@Z ; e
add esp, 12 ; 0000000cH
fmul QWORD PTR _x$[ebp]
jmp SHORT $L585
$L584:
; 5 : else return 1.0/x*e(x,n+1);
fld QWORD PTR __real@8@3fff8000000000000000
fdiv QWORD PTR _x$[ebp]
fstp QWORD PTR -8+[ebp]
TITLE c:\tmp\tmp\err.cpp
.386P
include listing.inc
if @Version gt 510
.model FLAT
else
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
_DATA SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA ENDS
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
_BSS SEGMENT DWORD USE32 PUBLIC 'BSS'
_BSS ENDS
$$SYMBOLS SEGMENT BYTE USE32 'DEBSYM'
$$SYMBOLS ENDS
$$TYPES SEGMENT BYTE USE32 'DEBTYP'
$$TYPES ENDS
_TLS SEGMENT DWORD USE32 PUBLIC 'TLS'
_TLS ENDS
; COMDAT ??_C@_05IKCD@?$CFlf?$CFd?$AA@
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
; COMDAT ??_C@_0M@EFMC@?$CFlg?$FO?$CFd?$DN?$CFlg?6?$AA@
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
; COMDAT ?e@@YANNH@Z
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
; COMDAT _main
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
FLAT GROUP _DATA, CONST, _BSS
ASSUME CS: FLAT, DS: FLAT, SS: FLAT
endif
PUBLIC ?e@@YANNH@Z ; e
PUBLIC __real@8@3fff8000000000000000
EXTRN __fltused:NEAR
; COMDAT __real@8@3fff8000000000000000