Computer Science/컴퓨터 구조
-
CALL, RET, 함수 호출Computer Science/컴퓨터 구조 2024. 4. 25. 13:13
어셈블리어 명령어 중 CALL, RET 정리하고 함수 호출 과정 정리.CALL 하나의 명령어지만 아래 작업을 내부적으로 수행현재 명령어 포인터(IP) 또는 프로그램 카운터(PC)의 다음 명령어 주소를 스택에 저장 (스택에 해당하는 메모리 주소에 값을 STORE)실행하려는 명령어 포인터(IP) 또는 프로그램 카운터(PC)로 점프 CALL 은 1바이트(opcode) + 명령어 주소 4바이트 (operand)로 구성. 명령어 주소는 오프셋을 의미한다. 즉 CALL로 실행하고자 하는 함수의 주소가 현재 명령어의 주소 + 오프셋으로 계산되어 점프한다. 점프하기 전에 현재 명령어의 다음 명령어의 주소를 스택에 PUSH 하는데, 이 다음 명령어의 주소는 현재 명령어의 주소 + CALL 명령어의 크기(보통 5바이..
-
레지스터와 명령어 사이클Computer Science/컴퓨터 구조 2023. 8. 11. 00:42
레지스터 : CPU 제조사마다 다름. 여러 제조사가 공통 포함하는 레지스터 프로그램 카운터 : 메모리에서 읽어들일 명령어의 주소 저장 명령어 레지스터 : 메모리에서 읽어들인 명령어를 저장 -> 제어 장치가 이 레지스터의 명령어를 받아들임 메모리 주소 레지스터 : 메모리 주소를 저장. CPU가 읽어들이고자 하는 주소값을 버스로 보낼 때 주소 레지스터 거침 메모리 버퍼 레지스터 : 메모리와 주고 받을 값 저장. 메모리에 쓰고 싶은 값이나 전달 받은 값 저장. 데이터 버스로 주고 받고 이 레지스터를 거침 플래그 레지스터 : 연산 결과의 플래그 저장 범용 레지스터 : 자유롭게 사용하는 레지스터 스택 포인터 : 스택의 꼭대기를 가리키는 레지스터 (스택 영역이라는 공간이 메모리에 따로 있다) 베이스 레지스터 : 기..
-
명령어의 구조Computer Science/컴퓨터 구조 2023. 8. 5. 16:08
기계어나 어셈블리어가 이루는 하나하나가 명령어이다. 명령어는 연산코드 (operation code) 와 오퍼랜드 (operand)로 이루어져 있음. 오퍼랜드는 없을 수도, 하나 있을 수도, 2개, 3개 있을 수도 있다. 연산코드는 CPU마다 다르지만 공통으로 사용하는 대표적인 연산 코드들이 있다. 그 종류는 아래와 같다. 1. 데이터 전송 2. 산술/논리 연산 3. 제어 흐름 변경 4. 입출력 제어 대표적인 연산 코드는 아래와 같다. 데이터 전송 MOVE : 데이터를 옮겨라 STORE : 메모리에 저장하라 LOAD (FETCH) : 메모리에서 CPU로 데이터를 가져와라 PUSH : 스택에 데이터를 저장하라 POP : 스택의 최상단 데이터를 가져와라 스택 ? 산술/논리 연산 ADD / SUBTRACT / ..