본문 바로가기
흔한 학교 생활/컴퓨터 코딩 데이터

컴퓨터 프로그램 실행 과정과 CISC 명령어

by 흔한 학생 2024. 3. 7.
반응형

소스파일 빌드 과정 (.exe 파일 생성 과정)

---.c 소스파일

↓컴파일러↓

assemble

↓어셈블러↓

기계어 ---.obj

↓Linker↓

.exe

↓loader↓

메모리


내부 실행과정

~~~.exe 프로그램을 loader 가 메모리에 탑재한다.

8비트 레지스터 8개와 16비트 레지스터 2개로 구성된다.

1-1. 메모리에 실린 프로그램의 주소 번지를 PC(program counter)에 싣습니다.

1-2. 주소가 address bus에 실려서 enable? 마이크로프로세서 MEMR 

1-3. PC가 1증가하고 data bus 에 op code(operation code)가 실려서 마이크로프로세스 내부로 간다. 

1-4. Instruction Decoder (I.D.)가 해석하고 실행한다.

2-1. 다음 주소를 PC에 싣습니다.

2-2 ... 반복

 


어셈블리

필요한 명령어에 무엇이 있을까?

1. data transfer

2. 산술/논리 연산

3. 제어

명령어

8비트 메모리에 명령어가 들어가므로 2^8 개의 명령어로 한정되어 있다.

때문에 CISC 는 가질 수 있는 명령어가 적기 때문에 일을 처리하려면 복잡한 명령어가 들어가야 한다.

RISC가 복잡도가 더 낮고 명령어가 많은 이유이기도 하다.

 

명령어 크기

그리고 연산에 따라 명령어 크기가 달라질 수 있다.

최소 1바이트 명령어지만

데이터(값)를 이용한 연산이라면 명령어 뿐만 아니라 해당 값 8비트도 필요할 것이다.

때문에 2바이트를 사용해야한다.

만약 메모리를 가져와야 한다면 주소가 2바이트이므로(address bus가 16bits)

명령어까지 3바이트가 필요하다.

 

이때 명령어가 3바이트인지, 2바이트인지 1바이트인지 어떻게 구분하여 처리하는지 궁금할수도 있는데

처음 8bits 코드를 보고 구분할 수 있다고 한다.

이 첫 8비트 코드를 Operation Code; OP Code 라고 한다.


메모리 크기가 증가하거나 개수가 증가한다면?

만약 databus가 8bits 에서 16bits로 증가한다면

명령어의 기본 크기는 2 바이트 일것이다.

또 address bus 까지 16bits에서 32bits로 증가한다면 

기본 6바이트가 필요하다

이렇게 계속 증가한다면 어셈블러 또한 바뀔 때마다 재구성해야 하며

현재 ARM 에서 64비트에서 더 증가하지 않는 이유이기도 하다.

더 큰 것이 좋다 할수도 있지만 64비트는 현재까지도 충분히 크기때문에 그대로 가져갈 수 있다.

반응형