강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

ccj829님의 프로필 이미지
ccj829

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

스택 메모리

마지막 부분에서 push rax, rbx 부분 질문드립니다.

작성

·

373

1

안녕하세요! 좋은 수업 해주셔서 감사합니다.

마지막 부분에서 push rax, rbx와 pop rbx, rax를 해준 부분은

rax와 rbx의 값에 주소를 할당하여 저장을 해주고 MAX

함수에서 rax rbx를 사용하고 난 뒤  함수가 끝나면 pop을 

이용하여 rax , rbx의 값을 주소를 이용하여 다시 원래 갖고있던 중요한 값으로 되돌린다는 의미가 맞을까요?

퀴즈

어셈블리 언어로 작성된 코드를 컴퓨터가 실행 가능한 기계 코드로 변환하는 역할을 하는 것은 무엇일까요?

컴파일러

인터프리터

어셈블러

링커

답변 1

2

Rookiss님의 프로필 이미지
Rookiss
지식공유자

[rax, rbx에 주소를 할당해서]라는 설명이 조금 애매한데요.
단순히 rax, rbx 레지스터에 들어가 있는 값을 스택에 복사하는 것입니다.
(즉 sp 위치에 rax, rbx 값을 복사하고, sp를 +8 내려줌)
함수 사용 뒤 원래 들어가 있던 값으로 복원해주기 위해 pop 두번을 해주는 것이죠.
단 이게 되려면 우리가 저장한 위치로 sp를 조정해서 해줘야 하는데
그런 부분은 컴파일러에 의해 알아서 만들어져 있을 것입니다.

ccj829님의 프로필 이미지
ccj829

작성한 질문수

질문하기