1.2 정보의 표현과 저장
컴퓨터가 받아들이고 처리하는 정보의 종류로는 프로그램 코드와 데이터가 있다.
디지털 컴퓨터에서 그러한 정보들은 모두 2진수를 나타내는 비트들의 조합으로 표현된다.
컴퓨터 프로그램은 우리가 흔히 쓰는 C/C++,Python 같은 고급언어를 이용하여 작성하는데 우리는 이해하지만
디지털 회로들로 이루어진 컴퓨터 하드웨어는 전혀 이해하지 못한다. 그래서 이 프로그램은 컴파일러 라고 부르는
소프트웨어에 의해 하드웨어가 이해할 수 있는 언어로 번역된다. 이 때 번역된 언어를 기계어 혹은 기계코드 라고 한다.
고급언어들은 어느 컴퓨터에서 사용되든 거의 동일하지만, 기계어는 CPU마다 서로 다르다.
즉, CPU내부 구조에 따라 그 하드웨어가 이해할 수 있는 언어도 달라지는 것이다.
그러한 언어상의 차이를 해결하기 위하여 고급언어와 기계어 사이에는 각 CPU 고유의 중간언어가 존재하는데,
이 언어를 어셈블리 언어 혹은 어셈블리 명령어 라고 부른다.
또한 이러한 언어로 작성된 프로그램을 어셈블리 프로그램이라고 한다.

여기서 각 어셈블리 명령어가 지정하는 동작을 개략적으로 나타내는 기호인 'LOAD', 'ADD' 및 'STOR'을 니모닉스 라고 부른다.
어셈블리 언어로 작성된 프로그램은 어셈블러 라는 소프트웨어가 기계어 프로그램으로 번역해준다.
컴파일의 마지막 경과인 기계어 프로그램은 2진수로 이루어져있다.
저 위의 LOAD A,X 명령어에 대한 기계어의 예를 들어보면 다음과 같다.
| 연산코드 | 오퍼랜드 |
| 001 | 00101 |
연산코드 필드에 저장된 '001'은 '레지스터 A로 적재하라'는 연산을 지정해주는 비트들이며, 오퍼랜드 필드의 '00101'은 적재될 데이터가 저장되어 있는 기억장치 주소를 가리킨다.
위의 기계어에서는 오퍼랜트가 '5'번지를 가리키고있다. 따라서 이 기계어는 '기억장치 5번지의 내용을 읽어서 레지스터 A에 저장하라'는 명령을 나타내는 것이다.
명령어는 비트들의 개수와 용도 및 주소지정 방식에 따라 다양하게 구성될 수 있다. 만약 위의 예와 같이 연산코드가 3비트로 이루어진다면 2의3승인 8가지의 연산들을 지정할 수 있다. 또한 오퍼랜드 비트등릐 수가 5개이므로 동일하게 기억 장소들의 최대수는 2의5승 32개이다.
이와 같이 각 명령어에 들어갈 필드의 종류와 각 필드의 비트 수에 대한 구성을 명령어 형식 이라고 한다.
번역된 기계어들은 순서대로 기억장치에 저장된다.
CPU에 의해 한 번에 처리될 수 있는 비트들의 그룹을 단어라고 부른다.
단어의 길이는 CPU의 하드웨어 구조에 따라 8비트,16비트,32비트,64비트 등으로 다양하지만,
이 예에서는 단어가 8비트, 즉 한 바이트인 것으로 가정하고있다.

* 명령어 형식 - 명령어의 비트 수와 용도 및 필드 구성 방법을 지정해주는 형식
* 단어 - CPU에 의해 한 번에 처리될 수 있는 비트들의 그룹
* 명령어(instruction) - 어셈블리 명령어의 약칭
* 니모닉스(mnemonics) - 명령어가 지정하는 동작을 나타내는 간략화된 기호
* 어셈블러 - 어셈블리 프로그램을 기계어로 번역해주는 소프트웨어
* 어셈블리 프로그램 - 고급 언어와 기계어 사이의 중간 언어인 어셈블리 언어로 작성된 프로그램
* 컴파일러 - 고급언어 프로그램을 기계어로 변환해주는 소프트웨어
* 기계어 - 컴퓨터 하드웨어가 이해할 수 있는 언어
'CS > 컴퓨터구조' 카테고리의 다른 글
| [컴퓨터구조] CPU와 I/O 장치의 접속 (2) | 2025.04.27 |
|---|---|
| [컴퓨터구조] CPU와 기억장치의 접속 (0) | 2025.04.24 |
| [컴퓨터구조] 컴퓨터 시스템 개요 및 구조 (0) | 2025.04.22 |