본문 바로가기

Study/Computer Architecture

Language, Instruction

1. 고급언어/저급언어, 기계어, 어셈블리어, 컴파일 언어, 인터프리터 언어

  • High-Level Language; 고급언어: 사람을 위한 언어(C, C++, Java...)
  • Low-Level Language; 저급언어: 컴퓨터가 직접 이해하고 실행할 수 있는 언어(기계어, 어셈블리어...)

  • 컴파일 언어: 컴파일 방식으로 작동하는 프로그래밍 언어
    • 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어 (C언어가 대표적)
    • 컴파일 언어로 작성된 소스 코드는 컴파일(코드 전체가 저급 언어로 변환되는 과정)을 컴파일러(컴파일을 수행해 주는 도구) 가 진행함
    • 컴파일이 성공적으로 수행되면, 개발자가 작성한 소스 코드는 컴퓨터가 이해할 수 있는 저급 언어로 변환된다. 이렇게 컴파일러를 통해 저급 언어로 변환된 코드를 목적 코드(Object code)라고 함

  • 인터프리트 언어: 인터프리트 방식으로 작동하는 언어
    • 소스 코드를 한 줄씩 차례로 실행하며, 소스 코드를 한 줄씩 저급 언어로 변환하여 실행하는 도구인 인터프리터를 통해 작동한다. 대표적으로 Python이 있다.
    • 컴파일 언어에 비해 저급언어로 변환되는 시간까지 기다릴 필요는 없지만, 한 줄씩 해석과 실행을 반복하기 때문에 컴파일 언어보다 느리다.

2. 명령어, 연산코드, 오퍼랜드, 주소 지정 방식

  • 명령어는 기본적으로 연산 코드와 오퍼랜드로 구성되어 있다.
    • 연산 코드(연산자): 명령어가 수행할 연산
      • 연산 코드 필드: 연산 코드가 담기는 영역
      • 연산코드 종류
        • 데이터 전송: MOVE/STORE/LOAD(FETCH)/PUSH/POP
        • 산술/논리 연산: ADD/SUBTRACT/MULTIPLY/DIVIDE/INCREMENT/DECREMENT/AND/OR/NOT/COMPARE
        • 제어 흐름 변경: JUMP/CONDITIONAL JUMP/HALT/CALL/RETURN
        • 입출력 제어: READ/WRITE/START IO/TEST IO
    • 오퍼랜드(피연산자): 연산에 사용할 데이터가 저장된 위치, 주소필드라고 부름
      • 오퍼랜드 필드: 오퍼랜드가 담기는 영역

  • 주소 지정 방식
    • 오퍼랜드 부에 주소를 담는 이유는, 명령어 길이의 제한이 있기 때문이다.
    • 연산의 대상이 되는 데이터가 저장된 위치를 유효 주소라고 한다.
      • 즉시 주소 지정 방식
        • 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식
      • 직접 주소 지정 방식
        • 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식
      • 간접 주소 지정 방식
        • 유효 주소의 주소를 오퍼랜드 필드에 명시하는 방식
      • 레지스터 주소 지정 방식
        • 연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시하는 방식
      • 레지스터 간접 주소 방식
        • 연산에 사용할 데이터를 메모리에 저장, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시하는 방식

 

'Study > Computer Architecture' 카테고리의 다른 글

Memory Structure  (0) 2023.10.06
Data  (0) 2023.09.29
Computer Structure  (0) 2023.09.28