1] 소스 코드와 명령어
(1) 고급언어: 개발자가 이해하기 쉽게 만든 언어
1. 컴파일 언어
2. 인터프리트어
(2) 저급 언어: 컴퓨터가 이해하고 실행하는 언어
1. 기계어: 2진수 or 16진수로 표현된 언어
2. 어셈블리어: 기계어를 읽기 편한 형태로 번역한 저급 언어
(3) 고급언어가 저급언어로 변환될 때
1. 컴파일 방식 (컴파일 언어 > 저급언어): 한 번에 처리하는 방식
2. 인터프리트 방식 (인터프리터 언어 > 저급언어): 한 줄씩 처리하는 방식
2] 명령어의 구조
(1) 명령어는 연산코드(수행할 연산)와
오퍼랜드(연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치)로 구성
(2) 오퍼랜드 필드는 데이터보다는 주소를 많이 담고 있는 경우가 많기에 주소필드라고 부름
오퍼랜드가 없는 경우도 있고 하나 이상인 경우도 있다
(3) 연산코드
1. 데이터 전송
ex. MOVE, STORE, LOAD(FETCH) 메모리에서 CPU로 데이터를 가져와라, PUSH, POP...
2. 산술/논리 연산
ex. ADD, SUBTRACT, MULTIPLY, DIVIDE,
INCREMENT, DECREMENT,
AND, OR, NOT,
COMPARE...
3. 제어 흐름 변경
ex. JUMP, CONDITIONAL JUMP, HALT, CALL, RETURN...
4. 입출력 제어
ex. READ(INPUT), WRITE(OUTPUT), START IO, TEST IO...
(4) 명령어 주소 지정 방식(addressing modes)
연산에 사용할 데이터가 저장된 위치를 찾는 방법
유효 주소(effective address, 연산에 사용할 데이터가 저장된 위치)를 찾는 방법
1. 즉시 주소 지정 방식(immediate addressing mode)
연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시
가장 간단한 형태의 주소 지정 방식
연산에 사용할 데이터의 크기가 작아질 수 있지만, 빠름
2. 직접 주소 지정 방식(direct addressing mode)
오퍼랜드 필드에 유효 주소 직접적으로 명시
유효 주소를 표현할 수 있는 크기가 연산 코드만큼 줄어듦
3. 간접 주소 지정 방식(indirect addressing mode)
오퍼랜드 필드에 유효 주소의 주소를 명시
앞선 주소 지정 방식들에 비해 속도가 느림
4. 레지스터 주소 지정 방식(register addressing mode)
연산에 사용할 데이터가 저장된 레지스터 명시
메모리에 접근하는 속도보다 레지스터에 접근하는 것이 빠름
5. 레지스터 간접 주소 지정 방식(redister indirect addressing mode)
연산에 사용할 데이터를 메모리에 저장
그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시
3] 소스 코드가 명령어가 되기까지
C언어 컴파일 과정
전처리기(preprocessor) > 컴파일러(compiler) > 어셈블러(assembler) > 링커(linker)
'CS > [혼자 공부하는] 컴퓨터 구조' 카테고리의 다른 글
5-1] CPU의 성능 향상 기법: 코어와 스레드 (0) | 2023.03.31 |
---|---|
4-3] CPU의 작동원리: 명령어 사이클과 인터럽트 (0) | 2023.03.31 |
4-2] CPU의 작동원리: 레지스터 (0) | 2023.03.31 |
4-1] CPU의 작동원리: ALU와 제어장치 (0) | 2023.03.31 |
1] 컴퓨터 구조의 큰그림 (0) | 2023.03.31 |