728x90

컴퓨터 구조 3

프로그램 카운터

마이크로프로세서 내부에 있는 레지스터 중의 하나로서, 다음에 실행될 명령어의 주소를 가지고 있어서 실행할 기계어 코드의 위치를 지정한다. 때문에 명령어 포인터라고도 한다. 인텔의 x86계열의 CPU에서는 IP라고 한다.https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8_%EC%B9%B4%EC%9A%B4%ED%84%B0 CPU는 메모리(RAM)에 저장된 명령어들을 순서대로 실행한다.PC는 다음에 실행할 명령어의 메모리 주소를 가리킨다.CPU가 명령어를 하나 실행하면, PC는 자동으로 다음 명령어 주소로 업데이트된다.만약 jmp, call, ret 과 같은 분기 명령어가 나오면, PC는 새로운 주소로 점프하여 흐름 제어(Control Flo..

컴퓨터 구조 2025.05.21

__cdecl

_cdecl인자값 전달은 오른쪽부터스택 정리는 caller (호출하는 함수가 스택에서 정리)C언어에서 기본 호출 규약은 _cdecl이다.최적화 옵션이 켜져 있어서 그런지, ida의 때문인지 실제 흐름과 다를 수 있지만 개념만 이해한다는 생각으로 하였다.push 로 인자값을 역순으로 넣는다는 것을 알 수 있다. add esp, 14h5 * 4 = 20 byte 총 5개의 인자가 들어간 것이다.printf("a = %d, b = %d\n", a, b);여기에서 총 3개의 인자가 들어가고, 두 번째 printf 에서 2개의 인자가 들어간다. 그리고 push 하며 늘어났던 20바이트의 스택을 함수 호출 이전의 상태로 만들어 주었다

컴퓨터 구조 2025.05.12

메모리 스택

컴퓨터에서 함수 호출, 지역 변수 저장, 리턴 주소 저장 등을 위해 사용하는 후입 선출(LIFO, Last in First Out) 방식의 메모리 구조이다.  후입 선출 (LIFO Last in First Out)나중에 들어간 것이 먼저 나온다."가장 마지막에 넣은 데이터가 가장 먼저 나오는 구조"ex) 책 더미책을 책상위에 한 권씩 쌓는다고 생각을 해보면1. 첫번째 책 놓기2. 두번째 책 놓기3. 세번째 책 놓기아래의 그림처럼 되어있다.책을 꺼낼 때를 생각을 해보자.3번째에 있는 책을 가장 먼저 꺼내고2번째에 있는 책을 꺼낸다.1번째에 있는 책을 꺼낸다.3 -> 2 -> 1 메모리 스택을 "책 더미"로 비유를 하면 이해하기가 매우 쉽다.책상 위에 책을 하나씩 쌓는다고 생각을하고, 책마다 이름이 함수 이..

컴퓨터 구조 2025.04.11
728x90