고급언어: 개발자가 이해하기 쉽게 만든 언어 ex) C, C++, JAVA
저급언어: 컴퓨터가 이해하고 실행하는 언어 ex) 기계어, 어셈블리어
기계어: 0과 1로 이루어진 명령어로 구성된 저급언어
어셈블리어: 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급 언어
인터프리터 언어: 인터프리터에 의해 한 줄씩 실행, 소스코드 전체가 저급 언어로 변환되기까지 기다릴 필요 없음.
Compiler Explorer
godbolt.org
명령어(Instruction): 연산코드와 오퍼랜드로 구성.
-> 메모리(RAM)에 저장되어 있다가 CPU 내부의 명령어 레지스터(IR, Instruction Register)로 불러와서 실행됨.
연산코드(Opcode): 수행할 연산
오퍼랜드(Operand): 연산에 사용될 데이터 or 연산에 사용될 데이터가 저장된 위치(=주소 필드) <-- 논리적인 개념!
연산코드
1) 데이터 전송
2) 산술/논리 연산
3) 제어 흐름 변경: 특정 메모리 주소로 실행의 순서를 점프해서 옮기는 유형의 연산 코드
4) 입출력 제어
명령어 주소 지정 방식을 쓰는 이유는?
하나의 오퍼랜드에 저장할 수 있는 데이터 크기가 작아서 "주소 데이터"를 넣는게 메모리 활용하기 유리함.
CPU가 메모리에 접근하는 속도보다 레지스터에 접근하는 속도가 더 빠름 (why? 레지스터는 CPU안에 속해있으니까)
유효주소(effective address)
: 연산에 사용할 데이터가 저장된 위치
명령어 주소 지정 방식 (addressing modes)
: 연산에 사용할 데이터가 저장된 위치(메모리, 레지스터)를 찾는 방법, 유효 주소를 찾는 방법, 다양한 명령어 주소 지정 방식
1) 즉시 주소 지정 방식 (immediate addressing mode)
: 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시, 가장 간단한 형태의 주소 지정 방식, 연산에 사용할 데이터의 크기가 작아질 수 있지만 빠름.
2) 직접 주소 지정 방식 (direct addressing mode)
: 오퍼랜드 필드에 유효 주소 직접적으로 명시, 유효 주소를 표현할 수 있는 크기가 연산 코드만큼 줄어듦.
3) 간접 주소 지정 방식 (indirect addressing mode)
: 오퍼랜드 필드에 유효 주소의 주소를 명시, 앞선 주소 지정 방식들에 비해 속도가 느림.
4) 레지스터 주소 지정 방식 (register adressing mode)
: 연산에 사용할 데이터가 저장된 레지스터 명시, 메모리에 접근하는 속도보다 레지스터에 접근하는 것이 빠름.
5) 레지스터 간접 주소 지정 방식 (register indirect addressing mode)
: 연산에 사용할 데이터를 메모리에 저장, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시
'CONCEPT > Computer Architecture' 카테고리의 다른 글
[컴퓨터구조] ALU와 제어장치 (0) | 2025.02.16 |
---|---|
[컴퓨터구조] C언어의 컴파일과정 (0) | 2025.02.16 |
[컴퓨터구조] 0과 1로 숫자와 문자를 표현하는 방법 (0) | 2025.02.15 |
[컴퓨터구조] 컴퓨터 구조의 큰 그림 (0) | 2025.02.14 |
[컴퓨터구조] 컴퓨터 구조를 알아야 하는 이유 (0) | 2025.02.14 |
댓글