2010-10-17 155 views
0

給定一個數字,這個程序計算階乘,但它沒有長比9問題彙編代碼,計算階乘

.section .data 
.section .text 
.globl _start 

_start: 
pushl $10 
movl %eax, %ebx 

call func 
addl $4, %esp 
movl %eax, %ebx 

movl $1, %eax 
int $0x80 

.type func,@function 

func: 
    pushl %ebp 
    movl %esp, %ebp 
    movl 8(%ebp), %eax 
    cmpl $1, %eax 
    je fim_loop 
    decl %eax 
    pushl %eax 
    call func 
    movl 8(%ebp), %ebx 
    imull %ebx, %eax 

    fim_loop: 
     movl %ebp, %esp 
     popl %ebp 
     ret 

更大的作品數量編譯後運行程序,回聲$?應該返回結果,但這是返回0而不是正確的結果,有人知道這個代碼有什麼問題嗎?

回答

2

似乎是一個程序的退出值大小限制,我覺得最高值是255,這樣的libc

+0

你介意張貼最終的代碼,我應該使用SYS_WRITE什麼的? – jyz 2010-10-17 21:06:45