컴퓨터와 명령어[Computer Architecture]

SnowCat·2023년 1월 3일
0
post-thumbnail

고급 언어와 저급 언어

  • 고급 언어: 개발자들이 읽기 편하게 작성된 언어 (C언어, Java 등)
    컴파일 언어: 소스코드가 컴파일러에 의해 컴파일 과정을 거쳐 저급언어인 목적 코드로 변환되는 언어
    인어프리터 언어: 인터프리터에 의해 한줄씩 저급언어로 변환해 실행하는 언어
    컴파일 언어는 소스코드에 오류가 있으면 소스코드 전체 실행이 불가능하지만, 인터프리터 언어는 오류 발생 직전까지의 코드는 실행 가능
  • 저급 언어: 컴퓨터가 이해하고 실행할 수 있는 언어
    기계어: 0과 1의 이진수 또는 16진수로 이루어진 저급 언어
    어셈블리어: 기계어를 사람들이 읽을 수 있도록 변환한 저급 언어

명령어의 구조

  • 컴퓨터의 명령어는 무엇을 대상으로, 무엇을 수행하라는 구조로 이루어져 있음
add 100, 120
sub eax, ebx
mov 10, ecx
  • 구체적으로는 수행할 연산이 우선 나오고, 뒤에 오퍼랜드가 나오는 구조를 가짐

연산 코드

  • CPU가 명령어를 실행할 때 사용하는 구체적인 코드
  • 연산코드의 종류, 생김새는 CPU마다 다르지만, 크게 데이터 전송, 산술/논리 연산, 제어 흐름 변경, 입출력 제어로 분류할 수 있음

오퍼랜드

  • 오퍼랜드(Operand)는 명령어가 실행될 때 연산에 사용될 데이터나 저장된 데이터 주소를 의미함
    실제로는 명령어에서 표현할 수 있는 데이터 크기가 제약되어 있기 때문에 데이터 주소가 더 많이 담기게 되며, 오퍼랜드를 주소 필드라고 부르기도 함
  • 오퍼랜드는 없을 수도 있고, 여러개가 있을 수도 있음

명령어 주소 지정 방식

  • 명령어 주소 지정 방식은 연산에 사용할 데이터가 저장된 위치를 찾는 방법임
  • 유효 주소를 찾는 방법
    유효 주소: 연산에 사용할 데이터가 저장된 위치

즉시 주소 지정 방식 (immediate adressing mode)

  • 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방법
  • 가장 간단한 형태의 주소 지정 방식으로, 주소를 찾을 필요가 없기에 속도가 빠름
  • 연산에 사용할 데이터의 크기가 작아질 수 있음

직접 주소 지정 방식 (direct addressing mode)

  • 오퍼랜드 필드에 메모리 주소값을 직접적으로 적는 방법
  • 유효 주소를 표현할 수 있는 크기가 연산코드만큼 줄어들 수 있는 문제점이 있음

간접 주소 지정 방식 (indirect addressing mode)

  • 오퍼랜드 필드에 유효 주소를 가리키는 메모리 주소를 명시하는 방법
  • 유효 주소를 표현하는 크기가 커질 수 있으나 앞선 방식들에 비해 속도가 느려짐
    C언어에서 포인터를 사용하는 것이 간접 주소 지정 방식에 해당

레지스터 주소 지정 방식 (register addressing mode)

  • 연산에 사용할 데이터가 저장된 레지스터를 명시하는 방법
  • 레지스터에 접근하는 속도가 메모리에 접근하는 속도가 빠르기 때문에 속도가 빨라짐
  • 레지스터에 저장된 값이 유효주소일수도 있는데, 이 경우는 레지스터 간접 주소 지정 방식이라고 함

C언어의 컴파일 과정

  • C언어로 컴파일을 하게 되면 전처리기 -> 컴파일러 -> 어셈블러 -> 링커의 순을 거쳐서 저급 언어로 변환됨

전처리 과정

  • 컴파일 전에 시행되는 작업들
  • #include와 같이 외부에 선언된 라이브러리, 소스코드 등을 가져옴
  • #define과 같은 매크로 변환
  • #if, #ifdef와 같은 부분의 컴파일할 영역을 명시함

컴파일 과정

  • 전처리가 완료된 소스코드를 저급 언어인 어셈블리어로 변환
    전처리가 완료되더라도 여전히 소스코드임

어셈블 과정

  • 어셈블리어를 기계어로 변환하는 과정
  • 목적 코드(object code)을 포함하는 목적 파일이 됨

링킹 과정

각각의 목적 파일들을 결합해 실행할 수 있는 파일을 만드는 과정

출처:
https://www.youtube.com/watch?v=B8TDaBp3UWo&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl&index=8&t=173s
혼자 공부하는 컴퓨터 구조+운영체제, 강민철, 한빛미디어

profile
냐아아아아아아아아앙

0개의 댓글