Software Lab

1. 명령어 집합(Instruction set) 본문

컴퓨터 구조/Instruction Set

1. 명령어 집합(Instruction set)

아임코더 2022. 8. 3. 15:11

명령어 집합은 CPU가 실행할 수 있는 기계 명령어 구조이다. 16bit CPU, 32bit CPU, 64bit CPU라고 할 때 앞의 bit 수는 그 CPU가 실행할 수 있는 기계 명령어 구조를 이루는 bit 수를 나타낸다. 아래 예시는 16bit CPU가 처리하는 16bit 명령어의 구조이다.

Instruction set

mode : 주소 지정 방식을 나타내는 값으로 즉시, 직접, 간접 등이 있다.
instruct : add, load, and와 같은 연산을 나타낸다.
address : 데이터가 위치한 주소를 나타낸다.

 

아래는 16bit CPU에서 지원하는 명령어 테이블이다.

 

아래 코드는 C 또는 C++ 같은 언어로 작성한 것이다. 이것이 어떻게 명령어 집합으로 변환되는지 알아보자.

int a = 2000;
int b = 3000;
int c = a + b;

이것을 컴파일하게 되면 아래와 같이 CPU가 처리할 수 있는 기계어로 변환된다.

.data
    0000 0011 1100 1000
    0000 1011 1011 1000
    
.code
    0000 0000 0011 0000
    0001 0000 0011 0010
    0001 1100 0011 0100

위 기계어는 해석하기 어려우므로 아래와 같이 어셈블리어로 변환해보자.

.data
    2000
    3000

.code
    load [0x0030]
    add [0x0032]
    store [0x0034]
load [0x0030] : 0x0030 번지에 있는 데이터를 읽어 들인다.
add [0x0032] : 0x0032 번지에 있는 데이터를 더한다.
store [0x0034] : 0x0034 번지에 계산된 데이터를 저장한다.

 

이렇게 컴파일을 거쳐 기계어로 변환하면 실행할 수 있는 프로그램이 된다. 그리고 프로그램을 실행하게 되면 메모리에 다음과 같이 올라가게 된다.

Comments