2023.07.06 - [컴퓨터 공학/컴퓨터 구조] - [혼공컴운] chapter.02 데이터
03-1 소스 코드와 명령어
- 고급 언어와 저급 언어
- 고급 언어: 사람이 이해하기 위해 만들어진 컴퓨터 언어
ex) 파이썬, 자바 등
- 저급 언어: 컴퓨터가 직접 이해하고 실행할 수 있는 언어
ex) 어셈블리어, 기계어
- 어셈블리어: 읽기 편한 형태의 저급 언어
<어셈블리어의 예시>
LDA 0XFE
STR 0XFF
SUB 0XFD
BZ 0X12
STR 0XFE
ADD 0XFF
STR 0XFF
LDA 0XFE
JMP 0X04
JMP 0X12
- 컴파일 언어와 인터프리터 언어
- 컴파일 언어: 컴파일 방식으로 작동하는 프로그래밍 언어
ex) c, c++ 등
- 컴파일 : 소스 코드 전체가 저급 언어로 변환 후 프로그램이 실행
- 컴파일러: 컴파일을 수행하는 툴
<컴파일 과정>
소스 파일 → 컴파일 → 오브젝트 파일 - 인터프리터 언어: 인터프리터에 의해 소스 코드가 한 줄 씩 실행되는 포로그래밍 언어
ex) 파이썬, Ruby 등
- 인터프리터: 소스 코드를 한 줄 씩 저급 언어로 변환하여 실행하는 툴 - 컴파일러와 인터프리터의 차이점
- 컴파일 언어: 컴파일 방식으로 작동하는 프로그래밍 언어
컴파일러 | 인터프리터 | |
중간 객체 코드를 생성하는가? | O | X |
속도가 빠른가? | O | X |
메모리가 많이 필요한가? | O | X |
오류 감지가 쉬운가? | X | O |
컴파일이 실행 전에 수행되는가? | O | X |
→ 컴파일러는 중간 객체 코드 생성. 인터프리터는 생성 X
→ 컴파일러는 한 번에 전체 프로그램을 사용. 즉, 인터프리터 보다 빠르다.
→ 컴파일러는 객체 코드 생성 때문에 인터프리터 보다 많은 메모리가 필요.
→ 컴파일러는 모든 오류 동시에 표기, 인터프리터는 오류를 하나 씩 감지. 인터프리터가 오류를 감지하기에 더 쉽다.
→ 컴파일러는 소스 파일을 컴파일 후 실행이 일어남. 인터프리터는 동시에 일어남.
- 오브젝트파일(목적파일)과 실행파일
- 오브젝트파일: 목적 코드로 이루어진 파일 ( 실행 불가능 )
- 실행파일: 실행 코드로 이루어진 파일 ( 실행 가능 )
<링킹 과정> → 오브젝트 파일이 실행되기 위해서는 링킹 과정 필수적!
03-2 명령어의 구조
- 연산코드와 오퍼랜드
- 오퍼랜드: 연산에 사용할 데이터 혹은 데이터가 저장된 위치. 피연산자라고도 함.
- 오퍼랜드 필드: 명령어에서 오퍼랜드가 저장되는 영역. 주소필드라고도 함.
<오퍼랜드 필드의 개수에 따른 명령어 형식>
- 0-주소 명령어: 오퍼랜드가 하나도 없는 명령어
- 1-주소 명령어: 오퍼랜드가 하나인 명령어
- 2-주소 명령어: 오퍼랜드가 두 개인 명령어
- 3-주소 명령어: 오퍼랜드가 세 개인 명령어
- 연산코드: 명령어가 수행할 연산. 연산자라고도 함.
<연산자의 유형>
1. 데이터 전송 { ex) MOV, STR, LDA 등 }
2. 산술/논리 연산 { ex) ADD, SUB 등 }
3. 제어 흐름 변경 { ex) JMP 등 }
4. 입출력 제어 { ex) READ, WRITE 등 }
- 오퍼랜드: 연산에 사용할 데이터 혹은 데이터가 저장된 위치. 피연산자라고도 함.
- 주소 지정 방식
- 유효 주소: 연산의 대상이 되는 데이터가 저장된 위치
- 즉시 주소 지정 방식: 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식
- 데이터 표현 범위 小
- 속도 빠름 - 직접 주소 지정 방식: 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식
- 데이터 표현 범위 즉시 주소 지정 방식 보다 大, 간접 주소 지정 방식 보다 小
- 속도 즉시 주소 지정 방식 보다 느림 - 간접 주소 지정 방식: 오퍼랜드 필드에 유효 주소의 주소를 명시하는 방식
- 데이터 표현 범위 大
- 속도 느림 - 레지스터 주소 지정 방식: 오퍼랜드 필드에 연산에 사용할 데이터를 저장한 레지스터를 명시하는 방법
- 데이터 표현 범위 小
- CPU 내부 레지스터에 접근하는 방식으로 직접 주소 지정 방식 보다 빠름 - 레지스터 간접 주소 지정 방식: 연산에 사용할 데이터를 메모리에 저장하고 유효 주소를 저장한 레지스터를 오퍼랜드 필드에 명시하는 방법
- 데이터 표현 범위 大
- CPU 내부 레지스터에 접근하는 방식으로 간접 주소 지정 방식 보다 빠름
- 즉시 주소 지정 방식: 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식
< 주소 지정 방식에 따른 범위와 속도 >
1. 속도 - 간접 < 직접 < 즉시
2. 데이터 표현 범위 - 즉시 < 직접 < 간접
3. 같은 방식, 다른 저장 장소인 주소 지정 방식 속도 - 레지스터 > 메모리
- 스택과 큐
- 스택(stack): 나중에 저장한 데이터를 가장 먼저 빼내는 데이터 관리 방식
= Last In First Out ( LIFO, 후입선출 )
- 큐(queue): 저장한 순서대로 데이터를 빼내는 데이터 관리 방식
= First In First Out( FIFO, 선입선출 )
☆ 스택과 큐는 자료구조, 알고리즘 등 컴퓨터 공학에서 매우 중요한 개념 ☆
'컴퓨터 공학 > 컴퓨터 구조' 카테고리의 다른 글
[혼공컴운] chapter.05 CPU 성능 향상 기법 (0) | 2023.07.16 |
---|---|
[혼공컴운] chapter.04 CPU의 작동원리 (0) | 2023.07.15 |
[혼공컴운] chapter. 01~03 확인문제 (0) | 2023.07.08 |
[혼공컴운] chapter.02 데이터 (0) | 2023.07.06 |
[혼공컴운] chapter.01 컴퓨터 구조 시작하기 (1) | 2023.07.06 |