❰❰ 03. 명령어 ❱❱
[ 03-1. 소스코드와 명령어 ]
→ 컴퓨터가 이해하는 건, 명령어와 데이터 뿐.
→ 따라서, 소스코드는 컴퓨터가 이해하는 명령어로 변환되어야한다.
[ 1 ] 코드의 분류
- 소스코드
- 목적코드
- 실행코드
[ 2 ] 언어의 분류
분류기준 (1)
- 저급언어 (low-level programming language)
- 기계어
- 어셈블리어
- 고급언어 (high-level programming language)
분류기준 (2)
- 컴파일 언어
- 인터프리터 언어
저급언어
- 컴퓨터가 직접 이해하고 실행할 수 있는 언어.
- 명령어들로 이루어져있다.
**기계어**
- machine code
- 0과 1의 비트로 이루어진 언어
- 때로는 가독성을 위해 16진수로 표현하기도 한다.
**어셈블리어**
- 비트로 이루어진 명령어를 읽기편한 단어기호 형태로 대체하여 표현 (약간 1:1 대응 느낌)
- 소스코드에 어셈블리어를 넣어서 사용하는 경우가 있다.
- 시스템 SW개발자, 임베디드 SW개발자. 게임 개발자 등
고급언어
- high-level programming lanugage
- 사람이 이해하기 쉬운 언어
[ 3 ] 컴파일, 인터프리터
고급언어에서 저급언어로 변환과정 방법
1. 컴파일
소스코드를 목적코드로 변환
2. 인터프리터
소스코드를 한 줄씩 실행
번역과 통역이라는 비유를 들면 편함
2가지 장단점이 있다.
컴파일 언어와 인터프리터 언어를 완전히 구별되는건 아님.
왜냐하면 언어들은 2가지 방법을 모두 사용하는 경우가 많기 때문이다.
[ 4 ] 기타 : 목적파일, 실행파일과 링킹
- 목적파일: 목적코드로 이루어진 파일. 목적 코드는 컴퓨터가 이해하는 코드.
- 실행파일: 실행코드로 이루어진 파일
- 링킹목적코드는 소스코드에서 만들어진 것이고, 소스코드 자체는 외부기능들을 다 가지고 있지 않다. 따라서, 목적코드가 사용하는 외부기능들(아마 라이브러리?)을 연결시켜야지, 진짜로 그 자체로 실행될 수 있는 실행파일이 된다.
- 페이지 087
- 목적코드가 실행파일이 되기 위해서 링킹이라는 작업이 필요.
[ 03-2. 명령어의 구조 ]
→ 저급언어 명령어의 연산코드, 오퍼랜드, 주소지정알아보기
[ 1 ] 명령어의 구조
- 구조 : 연산코드 + 오퍼랜드
- 연산코드 operation code
- : 명령어가 수행할 연산
- 오퍼랜드 operand
- : 연산에 사용할 데이터, 또는 그 데이터의 저장위치
[ 2 ] 오퍼랜드
데이터를 담을 수 있지만, 많은 경우에는 그 데이터를 주소를 저장하는데 사용한다.
그래서 주소필드라고도 불린다.
오퍼랜드의 갯수의 따른 명령어 구분
- 0-주소 명령어 ~ 3-주소 명령어
[ 3 ] 연산 코드
수행할 연산을 의미
큰 유형 4가지
- 입출력 제어
- 제어 흐름 변경
- 데이터 전송
- 산술/논리 연산
명령어의 종류와 생김새는 CPU마다 다르다. 따라서 원리를 이해하는데 초점을 맞추자.
[ 4 ] 주소지정방식
오퍼랜드에 데이터를 직접 넣지 않고, 주소를 넣는 이유
→ 명령어의 길이, 즉 저장용량의 한계가 있기 때문에
연산코드가 길어질 수록, 오퍼랜드 갯수가 많아질 수록, 오퍼랜드에 할당되는 비트 수는 적어진다.
유효 주소 effective address
연산의 대상이 되는 데이터가 저장된 위치
주소 지정 방식 addressing mode
(연산에 사용할) 데이터 위치를 찾는 방법, 유효 주소를 찾는 방법
주소지정방식은 CPU에 따라 다양하다. 대표적으로는 5가지를 들 수 있다.
방식 5가지
- 즉시 주소 지정 방식
- 직접 주소 지정 방식
- 간접 주소 지정 방식
- 레지스터 주소 지정 방식
- 레지스터 간접 주소 지정 방식
'정리 { CS: 컴퓨터 과학 } > 컴퓨터구조' 카테고리의 다른 글
| 0401(1)_ ❰❰ 04. CPU의 작동원리 ❱❱_ [ 04-3 명령어 사이클과 인터럽트 ] (0) | 2023.04.01 |
|---|---|
| 0331(1)_ ❰❰ 04. CPU의 작동원리 ❱❱ _[ 04-2. 레지스터 ] (0) | 2023.03.31 |
| 0330 -(1)_ ❰❰ 04. CPU의 작동원리 ❱❱ _[ 04-1. ALU와 제어장치 ] (0) | 2023.03.30 |
| 0327-(1)_ ❰❰ 02. 데이터 ❱❱ (0) | 2023.03.27 |
| 0324-(2)_ ❰❰ 01. 컴퓨터 구조 시작하기 ❱❱ (0) | 2023.03.24 |
댓글