본문 바로가기
프로그래밍/SystemSoftware

[Computer Architecture] Ch3 Command

by 퐁당당당 2025. 10. 2.

3-1 소스코드와 명령어

전제 : 소스코드는 → 명령어로 변환된다

1. 고급언어와 저급언어

  • 고급언어 : 보통 우리가 일반적으로 사용하는 프로그래밍 언어
  • 저급언어
    • 기계어 : 2진수로 구성
    • 어셈블리어 : 기계어를 읽기 편한 형태로 번역한 언어

2. 컴파일언어와 인터프리터 언어

둘의 목적, 기능은 동일하다. 고급 언어인 소스코드를 → 저급 언어인 목적 코드로 변환한다 (=compile한다)

  1. 컴파일러 언어 : 코드 ‘전체’를 목적코드(obj code)로 변환한다
  2. 인터프리터 언어 : 코드를 ‘한 줄씩’ obj code로 변환한다

2-1 목적파일 vs 실행파일 (Obj file vs exe file)

exe file은 실행코드로 이루어진 파일이기 때문에 obj file 이 exe file 이 되기 위해서는 ‘링킹’과정이 필요함

링킹이란 ‘obj file’에 없는 외부 기능들을 가져오는 작업을 의미한다.

예를 들면

obj file 에 helper 에 있는 HELPER 를 더하기 라는 코드가 있다면, 해당 파일에 없는

  1. helper 에 접근하기
  2. HELPER 가져오기
  3. 더하기
  4. 화면에 결과 출력하기

와 같은 외부 기능들과 연결하는 것을 의미한다

3-2 명령어의 구조

1. 명령어의 구조

명령어는 크게 ‘무엇을’ ‘어떻게 해라’의 두 가지 구조로 구성되어 있다

무엇을 → 피연산자 // 연산에 사용할 데이터 or 그 위치 = operand

어떻게 → 명령어 = 연산코드

따라서 명령어는 operation code 부분과 operand 부분 두 가지로 나뉜다

2. Operand

operand는 대부분 데이터의 위치(=메모리 주소, register 주소) 가 담긴다

3. Operator

Operator즉, 연산자에는 크게 네 가지 명령어들이 담긴다

  1. 데이터 전송
    1. move
    2. store
    3. load : 메모리에 있는 데이터를 CPU로 가져와라
  2. 산술, 논리
    1. ADD…
    2. Compare : 두 숫자 or (true, false)를 비교해라
  3. 제어 흐름 변경
    1. Jump
  4. 입출력 제어
    1. read
    2. write
    3. 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