오늘의 질문
#06 · 돌아갈 주소
질문
은재: "call fact는 fact의 첫 줄로 점프하는 거잖아요. fact가 끝나면 어디서 불렀는지는 누가 기억해요? 그리고 fact가 fact를 부르면 n은 덮어써지지 않나요?"
오늘 알아낼 것
push와 pop, call과 ret이 rsp 하나로 스택을 다루는 법을 익힌다. 재귀 fact(4)를 한 단계씩 실행해 함수마다 쌓이는 32바이트 프레임(돌아갈 주소, 저장한 rbp, 지역 변수)과 가장 깊은 rsp 0x7fffffffdf80을 확인하고, 인자 8개짜리 add8로 System V 호출 규약(인자 레지스터 6개, 나머지는 스택, 반환은 rax, 16바이트 정렬)을 읽는다.
새솔대 공학관 5층 실습실 · 화요일 밤 디버거 교실
10월 13일 화요일 밤, 은재가 지난주 목록의 e8 00 00 00 00에 친 동그라미를 내밉니다. 도현이 먼저 답합니다. "함수 호출은 그냥 goto죠. 점프하면 끝."
"goto는 돌아올 곳을 몰라." 윤 조교가 흉내 CPU의 스택 판을 켭니다. "함수가 함수를 부르고, 그 함수가 또 부르고. 돌아갈 곳이 몇 개든 기억하는 방법은 하나야. 쌓아 두는 거지."
1~3교시는 누구나 볼 수 있고, 4교시부터는 무료 회원이면 끝까지 볼 수 있어요.
로그인하면 어디까지 봤는지 저장되고, '내 강의'에서 이어 볼 수 있어요. 가입비는 없어요.
카카오에서 닉네임만 받아 와요. 개인정보 처리방침
새 교시·새 강의 소식 받기
이 강의에 새 교시가 더해지거나 이어지는 강의가 열리면 이메일로 알려 드려요.
R
ReflexKR
눌러 보며 배우는 파이썬과 Reflex. 모든 예제는 Reflex 0.10.0에서 직접 실행해 확인했습니다.
ReflexKR은 배너 광고 없이 무료로 운영돼요. 도움이 되셨다면 커피 한 잔으로 응원해 주세요.
© 2026 ReflexKR · Since 2026 · CC BY-NC 4.0
질문과 답변
이 교시에서 궁금한 점을 남겨 주세요. 모든 언어 페이지의 질문이 함께 모입니다.