3장 명령어

2023. 3. 20. 20:53

03-1) 소스코드와 명령어

  • 고급언어와 저급언어
    • '사람을 위한 언어'를 고급 언어 (high-level programming language)
    • '컴퓨터가 직접 이해하고 실행할 수 있는 언어'를 저급 언어 (low-level programming language)
    • 고급언어로 작성된 소스 코드가 실행되려면 반드시 저급 언어, 즉 명령어로 변환되어야 함
  • 저급 언어의 종류
    • 기계어 (machine code) : 0과 1의 명령어 비트로 이루어진 언어
    • 어셈블리어 (assembly language) : 0과 1로 표현된 명령어(기계어)를 읽기 편한 형태로 번역한 언어
    • 어셈블리어를 읽으면 컴퓨터가 프로그램을 어떤 과정으로 실행하는지 하나하나 추적하고 관찰할 수 있다.
  • 컴파일 언어와 인터프리터 언어
    • 고급언어가 저급언어로 변환되는 두 가지 방식을 일컫는다.
    • 컴파일 언어 : 컴파일 방식으로 작동하는 프로그래밍 언어
      • 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어
      • 대표적 언어 : C
      • 저급 언어로 변환되는 과정을 컴파일, 컴파일을 수행하는 도구를 컴파일러라 함
      • 컴파일러를 통해 저급 언어로 변환된 코드를 목적 코드(object code)라 한다
    • 인터프리터 언어 : 인터프리트 방식으로 작동하는 프로그래밍 언어
      • 인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급 언어
      • 대표적 언어 : Python
      • 소스 코드를 한 줄씩 한 줄씩 차례로 실행함
      • 한 줄씩 저급 언어로 변환하여 실행해 주는 도구를 인터프리터라 함
      • 한 줄씩 실행하기 떄문에 N번째에 오류가 있더라도 N-1번째 줄까지 올바르게 수행됨

03-2) 명령어의 구조

  • 연산 코드와 오퍼랜드
    • 명렁어는 연산 코드와 오퍼랜드로 구성되어 있다.
    • 연산 코드 (operation code) : 명령어가 수해할 연산 (= 연산자)
      • 가장 기본적인 연산 코드 유형
        1. 데이터 전송
        2. 산술/논리 연산
        3. 제어 흐름 변경
        4. 입출력 제어
    • 오퍼랜드 (operand) : 연산에 사용할 데이터 혹은 연산에 사용할 데이터가 저장된 위치 (= 피연산자)
      • 오퍼랜드 필드에는 숫자와 문자 등을 나타내는 데이터 또는 메모리나 레지스터 주소가 올 수 있음
      • 그러나 데이터를 직접 명시하기 보단 메모리 주소나 레지스터 이름이 담김
      • 오퍼 랜드 필드 안에 메모리 주소가 담긴다면 표현할 수 있는 데이터의 크기는 하나의 메모리 주소에 저장할 수 있는 공간만큼 커지기 때문임
      • 그래서 오퍼랜드 필드를 주소필드라 부름
  • 주소 지정 방식
    • 즉시 주소 지정 방식 : 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시
    • 직접 주소 지정 방식 : 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식
    • 간접 주소 지정 방식 : 유효 주소의 주소를 오퍼랜드 필드에 명시
    • 레지스터 주소 지정 방식 : 직접 주소 지정 방식과 비슷하게 연산에 사용할 데이터를 저장한 레지스터를 명시
    • 레지스터 간접 주소 지정 방식 : 연산에 사용할 데이터를 메모리에 저장하고, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시

 

' > 혼자 공부하는 컴퓨터 구조 + 운영체제' 카테고리의 다른 글

6장 메모리와 캐시 메모리  (0) 2023.03.23
5장 CPU 성능 향상 기법  (0) 2023.03.21
4장 CPU의 작동 원리  (0) 2023.03.21
2장 데이터  (0) 2023.03.20
1장 컴퓨터 구조의 큰그림  (0) 2023.03.20

+ Recent posts