3-1 소스코드와 명령어
전제 : 소스코드는 → 명령어로 변환된다
1. 고급언어와 저급언어
- 고급언어 : 보통 우리가 일반적으로 사용하는 프로그래밍 언어
- 저급언어
- 기계어 : 2진수로 구성
- 어셈블리어 : 기계어를 읽기 편한 형태로 번역한 언어
2. 컴파일언어와 인터프리터 언어
둘의 목적, 기능은 동일하다. 고급 언어인 소스코드를 → 저급 언어인 목적 코드로 변환한다 (=compile한다)
- 컴파일러 언어 : 코드 ‘전체’를 목적코드(obj code)로 변환한다
- 인터프리터 언어 : 코드를 ‘한 줄씩’ obj code로 변환한다
2-1 목적파일 vs 실행파일 (Obj file vs exe file)
exe file은 실행코드로 이루어진 파일이기 때문에 obj file 이 exe file 이 되기 위해서는 ‘링킹’과정이 필요함
링킹이란 ‘obj file’에 없는 외부 기능들을 가져오는 작업을 의미한다.
예를 들면
obj file 에 helper 에 있는 HELPER 를 더하기 라는 코드가 있다면, 해당 파일에 없는
- helper 에 접근하기
- HELPER 가져오기
- 더하기
- 화면에 결과 출력하기
와 같은 외부 기능들과 연결하는 것을 의미한다
3-2 명령어의 구조
1. 명령어의 구조
명령어는 크게 ‘무엇을’ ‘어떻게 해라’의 두 가지 구조로 구성되어 있다
무엇을 → 피연산자 // 연산에 사용할 데이터 or 그 위치 = operand
어떻게 → 명령어 = 연산코드
따라서 명령어는 operation code 부분과 operand 부분 두 가지로 나뉜다
2. Operand
operand는 대부분 데이터의 위치(=메모리 주소, register 주소) 가 담긴다
3. Operator
Operator즉, 연산자에는 크게 네 가지 명령어들이 담긴다
- 데이터 전송
- move
- store
- load : 메모리에 있는 데이터를 CPU로 가져와라
- 산술, 논리
- ADD…
- Compare : 두 숫자 or (true, false)를 비교해라
- 제어 흐름 변경
- Jump
- 입출력 제어
- read
- write
- start IO
4. 주소 지정 방식
주소 지정방식을 다루는 이유는 → operand 자리에 데이터를 넣게 되었을 때 명령어의 길이가 부족할 수 있기 때문이다
0) 즉시 주소 지정 방식
연산에 사용할 데이터를 직접 입력하는 방식
1) 직접 주소 지정 방식
유효 주소를 직접적으로 명시 → operand 에 있는 유효 주소를 따라가면 → 바로 데이터가 나옴

2) 간접 주소 지정 방식
유효 주소의 주소를 명시하는 방식 → operand에 있는 주소를 따라가면 → “데이터의 주소”가 나옴

3) 레지스터 주소 지정 방식 ⇒ 직접 주소 지정 방식과 유사
레지스터의 주소를 명시하는 방식 → operand에 있는 주소를 따라가면 → 레지스터가 나옴

4) 레지스터 간접 주소 지정 방식
레지스터 주소의 주소를 명시하는 방식 → operand에 있는 주소를 따라가면 → 레지스터의 주소가 나옴

'프로그래밍 > SystemSoftware' 카테고리의 다른 글
| [Computer Architecture]Ch2 Data (0) | 2025.10.02 |
|---|---|
| [Computer Architecture] Ch1 시작하기 (0) | 2025.10.02 |