factorial assembly code
글쓴이: gusiri / 작성시간: 수, 2008/05/21 - 2:04오전
.
.
.
.
.
.
.
.
int fact_goto(int x)
{
int result = 1;
loop:
result *= x;
x = x-1;
if (x > 1)
goto loop;
return result;
}
-------------------------------------------
_fact_goto:
pushl %ebp
movl %esp,%ebp
movl $1,%eax
movl 8(%ebp),%edx
L11:
imull %edx,%eax
decl %edx
cmpl $1,%edx
jg L11
movl %ebp,%esp
popl %ebp
ret
어셈블리를 막 배우는 초보입니다.
위코드는 factorial을 계산하는 어셈블리 코드입니다.
제가 이해가 안되는 부분은 result 값을 저장하는 %eax 를
리턴하는 부분이 어디인가 하는 겁니다.
popl %ebp 에서 그것이 이루어지는 듯 하는데...
어떤 방식에 의해서 그렇게 되는건가요?
Forums:
ret에서 리턴되면
ret에서 리턴되면 그때 %eax에 들어있는 값이 리턴 값 아닌가요?
"popl %ebp" --> 요건 return address인지 stack 반환인지에 관계있었던듯...
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
감사합니다
ret 하면 자동으로 %eax 값이 리턴되는 것이군요?!
감사합니다!!
^ㅡ^
댓글 달기