본문으로 건너뛰기

소스코드와 명령어

소스코드와 명령어

  • 고급 언어: 사람이 이해하고 작성하기 쉽게 만들어진 언어
  • 저급 언어: 컴퓨터가 직접 이해하고 실행할 수 있는 언어
  • 저급 언어는 0과 1로 일워진 명령어로 구성된 기계어와 기계어를 사람이 읽기 편한 형태로 번역한 어셈블리어가 있다.
  • 컴파일언어: 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 언어
  • 인터프리터 언어: 인터프리터에 의해 소스 코드가 한 줄씩 저급 언어로 변환되어 실행되는 언어
  • 컴파일이 성공적으로 수행되면 개발자가 작성한 소스 코드는 컴퓨터가 이해할 수 있는 저급 언어로 변환된다. 이렇게 컴파일러를 통해 저급 언어로 변환된 코드를 목적 코드라고 한다.
  • 목적 코드가 실행 파일이 되기 위해서는 링킹이라는 작업을 거쳐야 한다.

명령어의 구조

  • 명령어: 연산 코드와 오퍼랜드로 구성된다.
  • 연산 코드: 명령어가 수행할 연산을 의미
  • 오퍼랜드: 연산에 사용할 데이터 또는 연산에 사용할 데이터가 저장된 위치를 의미
  • 주소 지정 방식: 연산에 사용할 데이터 위치를 찾는 방법
  1. 즉시 주소 지정 방식: 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식
    → 빠르다.

  2. 직접 주소 지정 방식: 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식
    → 표현할 수 있는 오퍼랜드 필드의 길이가 연산 코드의 길이만큼 짧아져 표현할 수 있는 유효 주소에 제한이 생길 수 있다.

  3. 간접 주소 지정 방식: 유효 주소의 주소를 오퍼랜드 필드에 명시한다.
    → 일반적으로 느린 방식

  4. 레지스터 주소 지정 방식: 연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시하는 방법
    → 직접 주소 지정 방식보다 빠르게 데이터에 접근할 수 있다.
    → 표현할 수 있는 레지스터 크기에 제한이 생길 수 있다.

  1. 레지스터 간접 주소 지정 방식: 연산에 사용할 데이터를 메모리에 저장하고 그 주소(유효 주소)를 저장한 레지스터를 오퍼랜드 필드에 명시하는 방법