어셈 질문입니다(메모리맵 그리기)
글쓴이: wcg0112 / 작성시간: 화, 2008/06/17 - 11:14오후
804a2be: e8 ed e2 ff ff call 80485b0
804a2c3: 83 c4 10 add $0x10,%esp
804a2c6: c7 45 fc 01 00 00 00 movl $0x1,0xfffffffc(%ebp)
804a2cd: 83 7d fc 16 cmpl $0x16,0xfffffffc(%ebp)
call 80485b0 이거
esp가 0xbffd73e0 인상태에서
콜하니까 esp는 0xbffd73de 가 되네요
저 사이에 리턴 어드레스 푸쉬되는겁니까? (저장)
그리고
804a2c3: 83 c4 10 add $0x10,%esp
804a2c6: c7 45 fc 01 00 00 00 movl $0x1,0xfffffffc(%ebp)
804a2cd: 83 7d fc 16 cmpl $0x16,0xfffffffc(%ebp)
첨에껀 상수 10 만큼 메모리 주소에 더해주란 소리구
두번째 세번째가 뭐 어찌란말인지 몰겠네요 ㅠㅠ
Forums:
esp는 stack pointer이고,
esp는 stack pointer이고, ebp는 frame pointer입니다.
함수호출이 되면 esp와 ebp가 동시에 갱신이 됩니다. 그후에 esp는 push, pop에 의해 증가 감소 하지만 ebp는 변하지 않아서 함수 내에 할당되는 automatic variable와 함수에 전달된 인수(arguments)를 접근할 때 기준점이 됩니다.
0xfffffffc(%ebp) --> 0xfffffffc가 -4가 이므로, 주소 (%ebp-4)를 뜻합니다. 십중 팔구 함수의 automatic variable 이겠죠.
컴공과이시라면 학부때 배운 Programming Language 책을 한번 찾아보세요. 그림으로 알기 쉽게 설명되어 있을 겁니다.
call 명령어 매뉴얼
call은 점프전에 return될 address를 스택으로 밀어 넣습니다.
Written By the Black Knight of Destruction
Written By the Black Knight of Destruction
댓글 달기