inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

스택 메모리

RIP 레지스터

1485

한울

작성한 질문수 36

0

안녕하세요 다름이 아니라 rip 레지스터에 대해서 궁금한 게 있는데

rip 레지스터의 정의에 대해서 검색을 하니

1.  현재 수행 중인 명령의 주소를 가리키는 레지스터

2. 다음 수행 명령의 주소를 가리키는 레지스터로

나와있는데 2가지 의미가 동일한 의미인 것인가요? 

아무리 생각해도 1번과 2번이 동일한 의미로 생각되지가 않습니다...

 

 

C++

답변 2

0

피로한 문어

안녕하세요 제가 챗GPT에 물어본 결과, 어떤 명령어를 ip가 가리키고 있다가 그 명령어가 실행된 직후에 IP가 증가하여 다음 명령어를 가리키게 됩니다. 따라서 ip는 다음에 실행할 명령어를 가리키고 있습니다.

0

Rookiss

그냥 큰 틀에서 보시기 바랍니다.

정확히 말하면 [다음 실행할 명령어의 메모리 주소를 저장]하는게 맞긴 하지만,
일반적으로 [현재 실행하는 명령어] = [다음 실행할 명령어 바로 이전] (함수 ret 상황이 아니라면)이니
현재 제어 위치를 나타낸다고 볼 수도 있긴 하죠.

0

한울

1. 그렇다면 call이 실행됬을 때 스택에 저장되는 ret주소(xor rax, rax의 메모리 주소)와 명령어 ret의 주소와는 전혀 다른 것인가요?

2. 그리고 ret주소는 rip를 통해 알 수 있다고 하셨는데 그렇다면 rip는 왜 다음 명령어로 f11처럼 push rbp를 가리키는 것이 아니라 f10처럼 xor rax, rax를 가리키게 되는 것인가요?

항상 감사합니다! 꼭 이해를 하고 싶은 부분이라...

0

Rookiss

1. 같습니다.
2. 함수가 끝나고 돌아갈 주소를 알아야 하기 때문입니다.

visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.

0

546

1

정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?

0

445

1

strcpy() 구현 관련 질문

0

519

1

빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?

0

461

1

클래스 타입의 포인터 질문합니다

0

550

1

입력값을 enum 값에 넣어주는거 이제 막혔나요?

0

501

1

템플릿 특수화 관련 질문

0

387

1

포인터 관련 질문합니다!

0

267

1

Unable to start assembler. Check your settings.

0

840

2

cpu선택

0

543

1

포인터 질문이 있습니다

0

330

1

20:35 에서 구조체 크기에 대한 질문입니다!

0

588

1

iterator 삭제관련

0

410

1

함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!

0

315

1

15 분 45초 대 질문

0

312

0

스택 프레임 질문합니다!

2

309

1

오른값 참조 in 게임

0

387

0

동적할당 질문이 있습니다

0

452

1

안녕하세요 메모리에 대해 질문드립니다.

0

309

1

함수객체 의 매개변수

0

365

1

복사생성자

0

439

1

main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요

0

426

1

포인터 실습 강의를 보고 궁금한게 있습니다.

0

358

1

스택 오버플로우

2

794

1