[컴퓨터구조] 컴퓨터시스템 개요 (2)
김종현 컴퓨터구조론 개정5판 생능출판사, 김종상 컴퓨터시스템구조 제3판 프로텍미디어를 정리, 요약하여 올리는 글입니다.
1. 컴퓨터가 받아들이고 처리하는 정보의 종류는 프로그램 코드(Program Code)와 데이터(datat)가 있다. 디지털 컴퓨터에서는 그러한 모든 정보들은 2진수를 나타낼 수 있는 비트(bit)들의 조합으로 표현된다.
2. 컴퓨터 프로그램은 C, C++, Python과 같은 고급 언어(high-level language)를 이용해 작성된다. 사람이 보고 만들기에는 쉽지만 고급 언어를 기계가 이해할 수는 없다. 따라서 고급 언어로 만든 프로그램을 컴파일러(compiler)라고 부르는 소프트웨어에 의해 기계가 이해할 수 있게 번역한다. 이렇게 번역된 언어를 기계어(machine language) 혹은 기계 코드(machine code)라 한다.
고급 언어는 어느 컴퓨터에든지 동일하지만 기계어는 CPU마다 서로 다르다. 이해할 수 있는 기계어가 다르므로 이런 중간 차이를 해결하기 위해 고급 언어와 기계어 간에 중간 언어로 어셈블리 언어(Assembly language)가 있다. 따라서 고급 언어는 컴파일러를 통해 어셈블리 언어로 번역하고 어셈블리 언어를 어셈블러(assembler)라는 소프트웨어를 통해 기계어로 번역한다.
3. 고급 언어가 다음과 같이 어셈블리 언어로 번역되고 결국 기계어가 되었다고 가정해보자.
| 고급 언어 | 어셈블리 언어 | 기계어 |
| Z = X + Y | LOAD A, X ADD A,Y STOR Z,A |
00100101 10000110 01000011 |
마지막 기계어는 결국 이진수로 표현된 비트들의 집합이다. 이 비트들을 두 개의 필드(field)로 나눌 수 있다. 연산코드 필드(operation field)와 오퍼랜드 필드(operand field)이다. 연산코드 필드에는 기계가 해야할 명령어에 대한 정보가 들어있고 오퍼랜드 필드에는 데이터가 저장되어 있는 기억장치 주소 정보가 들어있다. 결국 해당 데이터가 저장된 기억장치 주소에 들어가서 해당 명령을 실행하라는 뜻으로 해석할 수 있다. 이러한 기계어들이 기억장치에 저장되어 있고 이를 운영체제가 꺼내오면서 프로그램을 실행시킨다.