🧩 소스 코드와 명령어
○ 소스 코드와 명령어
▪ 소스 코드 | 고급 언어. 개발자가 이해하고 실행하는 언어 ( =원시 코드)
▪ 명령어 | 저급 언어. 컴퓨터가 이해하고 실행하는 언어
ㄴ1) 기계어 : 0과 1
ㄴ2) 어셈블리어 : 기계어를 읽기 편한 형태로 번역한 저급 언어
○ 컴파일 언어 vs 인터프리트 언어
컴파일 언어
▪ 소스 코드 > 컴파일러 > 목적 코드
(고급 언어 저급 언어)
▪ 컴파일러 : 컴파일 언어로 작성된 소스 코드를 저급 언어로 변환
▪ 한꺼번에 실행
인터프리트 언어
▪ 인터프리터에 의해 한 줄씩 실행
Compiler Explorer
godbolt.org
🧩 명령어의 구조와 주소 지정 방식
○ 명령어 구조
① 연산 코드, ② 오퍼랜드
1. 연산 코드 : 수행할 연산
▪ 종류
1) 데이터 전송
- MOVE, STORE, LOAD(FETCH), PUSH, POP
2) 산술/논리 연산
- ADD / SUBTRACT / MULTIPLY / DIVIDE
- INCREMENT / DECREMENT
- AND / OR / NOT
- COMPARE
3) 제어 흐름 변경
- JUMP : 특정 주소로 실행 순서 옮기기
- CONDITIONAL JUMP : 조건에 부합할 때 특정 주소로 실행 순서 옮기기
- HALT : 프로그램 실행 STOP
- CALL : 되돌아올 주소 저장한 채 특정 주소로 실행 순서를 옮기기
- RETURN : CALL 호출 시 저장했던 주소로 돌아가기
4) 입출력 제어
- READ (INPUT) : 특정 입출력 장치로부터 데이터 읽기
- WRITE (OUTPUT) : 특정 입출력 장치로 데이터 쓰기
- START IO : 입출력 장치 시작
- TEST IO : 입출력 장치 상태 확인
2. 오퍼랜드 : 연산에 사용될 데이터 / 연산에 사용될 데이터가 저장된 위치 (= 주소 필드)
▪ 저장된 위치 사용 이유 - 명령어 내 표현 가능한 데이터 크기 제한 때문
▪ 오퍼랜드 갯수 - 없는 경우도 있고, 하나 이상인 경우도 있음 (0-주소 ~ 3-주소 명령어)
○ 명령어 주소 지정 방식
1. 유효 주소 (effective address)
- 연산에 사용된 데이터가 저장된 위치
2. 명령어 주소 지정 방식 (addressing modes)
- 연산에 사용될 데이터가 저장된 위치를 찾는 방법
- 유효 주소 찾는 방법
- 다양한 명령어 주소 지정 방식들
① 즉시 주소 지정 방식 (immediate addressing mode)
- "연산에 사용할 데이터"를 오퍼랜드 필드에 직접 명시
- 가장 간단한 형태
- 연산에 사용할 데이터 크기는 작아질 수 있으나, 빠름
② 직접 주소 지정 방식 (direct addressing mode)
- 오퍼랜드 필드에 "유효 주소" 직접적으로 명시
- 유효 주소를 표현할 수 있는 크기, 연산 코드만큼 줄어듦
③ 간접 주소 지정 방식 (indirect addressing mode)
- 오퍼랜드 필드에 "유효 주소의 주소" 명시
- 속도 느림
(+ 메모리 접근을 최소화하는 것이 무조건 속도 면에서 좋다)
④ 레지스터 주소 지정 방식 (register addressing mode)
- "연산에 사용할 데이터가 저장된 레지스터" 명시
- 레지스터에 접근하는 속도가 메모리에 접근하는 속도보다 빠름
⑤ 레지스터 간접 주소 지정 방식 (register indirect addressing mode)
- "연산에 사용할 데이터를 메모리에 저장하고, 그 주소를 저장한 레지스터"를 오퍼랜드 필드에 명시
(참고)
https://youtu.be/B8TDaBp3UWo?feature=shared
https://youtu.be/bWPHUi6BPxo?feature=shared
'📚 관련 독서 > 혼자 공부하는 컴퓨터구조 + 운영체제' 카테고리의 다른 글
섹션6 | 메모리와 캐시 메모리 (0) | 2024.01.02 |
---|---|
섹션5 | CPU의 성능 향상 기법 (0) | 2023.12.21 |
섹션 4 | CPU의 작동 원리 (0) | 2023.12.18 |
섹션 2 | 데이터 (0) | 2023.12.14 |
섹션 1 | 컴퓨터 구조 시작하기 (0) | 2023.11.22 |