[정보의 표현과 저장]
컴퓨터 정보의 종류는 2진수 비트들로 표현된 프로그램 코드(program code)와 데이터(data)가 존재한다.
프로그램 코드 종류
기계어(machine language)
- 기계 코드(machine code)라고도 함
- 컴퓨터 하드웨어 부품들이 이해할 수 있는 언어로서, 2진 비트들로 구성 되어있다.
어셈블리 언어(assembly language)
- 어셈블리 명령어(assembly instruction)라고도 함
- 고급 언어와 기계어 사이의 중간 언어
- 어셈블러(assembler)로 번역되며, 기계어와 일대일 대응
*어셈블러 : 어셈블리 프로그램을 기계어 프로그램으로 번역하는 소프트웨어
고급언어(high-level language)
- 영문자와 숫자로 구성되어 사람이 이해하기 쉬운 언어
- C, C++, PASCAL, FORTRAN, JAVA 등
- 컴파일러(compiler)를 이용하여 기계어로 번역한다.
*컴파일러(compiler) : 고급언어를 기계어로 변환해주는 소프트웨어
즉, 고급언어는 사용자를 위한 언어이고, 기계어는 컴퓨터가 이해하기 쉬운 언어이다.
고급언어에서 기계어로 변역 과정
ex) z = x + y 일경우
고급 언어
- z = x + y
어셈블리 언어
- LOAD A, x (A에 x의 내용을 불러옴)
- ADD A, y (A에 Y의 내용을 더함)
- STOR z, A (z에 A의 내용을 저장)
- 고급 언어에서의 한줄이 3줄로 늘어남.
- 위의 기호인 LOAD, ADD, STOR을 니모닉스(mnemonics)라고 부른다.
*니모닉스(mnemonics) : 명령어가 지정하는 동작을 나타내는 간략화된 기호
기계어
- 001 00101 (LOAD A, x)
- 100 00110 (ADD A, y)
- 010 00111 (STOR z, A)
이러한 과정을 거쳐 고급언어에서 기계어로 변환된다.
기계 명령어의 형식
ex) LOAD A, x = 001 00101
- 001 : 연산코드(op code)
- CPU가 수행할 연산을 지정해 주는 비트
- 만약 op code의 비트 수가 3이라면, 지정될 수 있는 연산의 최대수는 8개이다. 2의 3승,
- 만약 op code의 비트 수가 4라면, 지정될 수 있는 연산의 최대수는 16개이다. 2의 4승.
- 위의 경우 op code field가 1이므로, LOAD하라는 의미
- 00101 : 오퍼랜드(operand)
- 연산에 사용될 데이터 혹은 그것이 저장되어 있는 기억장치 주소 (memory address)
- 만약 operand의 비트 수가 5라면, 주소 지정(addressing)할 수 있는 기억 장소의 최대수는 32개이다. 2의 5승,
- 만약 operand의 비트 수가 6이라면, 주소 지정(addressing)할 수 있는 기억 장소의 최대수는 64개이다. 2의 6승.
- 위의 경우 operand field가 5이므로, 기억장치의 5번지의 내용을 읽어 레지스터 A에 불러오라(op code filed : 1)는 의미.
프로그램 코드와 데이터의 기억장치 저장
- 프로그램 코드(명령어)(op code)와 데이터(operand)는 지정된 기억 장소에 저장한다.
- 단어(word) 단위로 저장
- 단어 : 각 기억 장소에 저장되는 정보의 기본 단위로, CPU에 의해 한 번에 처리될 수 있는 비트들의 그룹
- 단어 길이의 예 : 8비트, 32비트, 64비트, 128비트
- 주소지정 단위 : 단어(word) 단위 혹은 바이트(byte) 단위
- 낮은 주소에 명령어(op code)가 쌓이고
- 높은 주소에 데이터(operand)가 쌓인다.
- 하지만, 실질적으로 컴퓨터는 프로그램 코드 영역과 데이터 코드 영역을 구분하지 않는다.
댓글