[22.01.05]컴퓨터 구조론 Chap.01

프로젝트 알파 공부 게시판

[22.01.05]컴퓨터 구조론 Chap.01

조회수 210

어제 C++을 공부했던 내용과 비슷한 내용이 포함되어 있다.

 컴퓨터는 2진 신호(1과 0)으로 모든 것을 구별하고, 해석한다. 우리가 흔히 사용하는 모든 컴퓨터 서비스, 프로그램 또한 이 2진신호로 이루어져 있다. 그렇다면 어떻게 만드는 것일까?

 모든 소프트웨어는 C++, Java, 파이썬 과 같은 고급 프로그래밍 언어로 작성된다. 문제는, 작성만 한다면 사람만 읽고 이해할 수 있고, 컴퓨터는 읽기만 가능하지 이해는 못한다는 것이다. 그래서 해당 언어가 지원되는 컴파일러로 작성된 프로그램을 기계어로 번역한다.

 여기서 컴퓨터의 CPU와 소프트웨어 사이에 소통할 수 있도록 고급 언어보다 먼저 개발된 언어가 있는데, 그것이 "어셈블리 언어('어셈블리 명령어' 라고도 한다)"이다. 어셈블리 언어를 번역하는 "어셈블러"를 통해 어셈블리 프로그램을 만드는데, 이 프로그램이 곧 기계어 프로그램이다.


 여기까지 정리해보면, 이와 같다.

  소스파일(고급 언어) -> 컴파일(컴파일러) -> 어셈블리어(어셈블러) -> 기계어 코드

   과정으로 개발된다.


 그럼 본격적으로 컴퓨터 안에서 핵심을 담당하는 "중앙처리장치(CPU)"가 어떻게 기계어 코드를 해석하는지 대략적으로 알아보자.

 기계어 코드는 무작위로 작성되어있는게 아니라, 특정 양식에 맞춰 작성되어 있다. 예를 들어, 어떤 프로그램을 작성했는데 8자리 2진 코드가 생성되었다고 가정하자. 그리고 이 2진코드의 양식이 3자리, 5자리로 나뉜다면 무엇을 나타낼 것 같은가. 바로, 행동 명령과 데이터의 주소이다.

 정리하자면, 앞의 3자리는 Operation Code Field라고 하여 "OP코드"라고 부른다. CPU가 행동해야할 명령이 적혀있다. 이 예에서는 3자리이므로 2의 3승 = 최대 8개의 명령이 지정 가능하다.

 그리고 바로 다음 5자리는 Operand Field라고 하여 "오퍼랜드"라고 부른다. 행동을 행할 데이터의 저장장치에 대한 주소가 명시되어 있다. 이 예에서는 5자리이므로 2의 5승 = 최대 32가지의 주소가 지정이 가능하다.

 이러한 필드의 종류와 각 필드의 비트 수에 대한 구성을 "명령어 형식"이라고 한다.(2장 내용이다)