소스 코드와 명령어

헨도·2024년 12월 1일
0

CS + 운영체제

목록 보기
3/5
post-thumbnail

소스 코드

고급 언어와 저급 언어

고급 언어

  • 개발자가 이해하기 쉽게 만든 언어
  • ex) C, Python, Java

저급 언어

  • 컴퓨터가 이해하고 실행하는 언어
  • 기계어 (0과 1 또는 16진수로 표현된 기계어)
  • 읽기 편한 형태로 번역한 것
고급 언어--------------------- 변환 --------------------- >저급 언어

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

컴파일 언어

(고급 언어) 컴파일 언어--------------------- (변환) 컴파일 --------------------- >저급 언어
  • 소스 코드 컴파일 중 오류가 발생하면 소스 코드 전체가 실행되지 않음
(고급 언어) 소스 코드------------------ (변환) 컴파일러 ------------------ >(저급 언어) 목적 코드

인터프리터 언어

(고급 언어) 인터프리터 언어--------------------- (변환) 인터프리터 --------------------- >저급 언어
  • 인터프리터에 의해 한 줄씩 실행
  • 소스 코드 전체가 저급 언어로 변환되기까지 기다릴 필요가 없음
  • 소스 코드 인터프리터 중 오류가 발생하면 오류 발생 전까지의 코드는 실행된다.
(고급 언어) 소스 코드------------------ (변환) 인터프리터 ------------------ >(저급 언어) 목적 코드

명령어

명령어의 구조

수행할 연산연산에 사용될 데이터 및 데이터 위치
더해라100과 120을
빼라메모리 32번지 안의 값과 메모리 33번지의 값을
저장해라10을 메모리 128번지에

명령어 주소 지정 방식

연산 코드(수행할 연산)오퍼랜드(연산에 사용될 데이터가 저장된 위치가 자주 담김 - 주소 필드라고도 불린다.)

ex) 오퍼랜드가 2개인 경우

moveax, 0

ex) 오퍼랜드가 1개인 경우

movrbp

ex) 오퍼랜드가 0개인 경우

mov

연산 코드

데이터 전송

  • MOVE
  • STORE
  • LOAD (메모리 -> CPU 데이터 가져와)
  • PUSH (Stack 에 저장)
  • POP (Stack 최상단 데이터 가져와)

산술논리 연산

  • ADD
  • SUBSTRACT
  • MULTIPLY
  • DIVIDE
  • INCREMENT
  • AND
  • OR
  • ...

제어 흐름 변경

  • JUMP
  • HALT (프로그램 실행 멈춰)
  • RETURN (CALL 호출할 때 저장했던 주소로 돌아가라)
  • ...

입출력 제어

  • READ
  • WRITE
  • ...

유효 주소 (effective address)

  • 연산에 사용될 데이터가 저장된 위치

명령어 주소 지정 방식(addressing modes)

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

방식 1. 즉시 주소 지정 방식(immediate addressing mode)

  • 메모리
  • 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시한다.
  • 가장 간단한 형태의 주소 지정 방식
  • 연산에 사용할 데이터의 크기가 작아질 수 있지만, 빠르다.

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

  • 메모리
  • 오퍼랜드 필드에 유효 주소 직접적으로 명시
  • 유효 주소를 표현할 수 있는 크기가 연산 코드만큼 줄어듬

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

  • 메모리
  • 오퍼랜드 필드에 유효 주소의 주소를 명시
  • 앞선 주소 지정 방식들에 비해 속도가 느림

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

  • CPU
  • 연산에 사용할 데이터가 저장된 레지스터 명시
  • 메모리에 접근하는 속도보다 레지스터 접근이 더 빠름

방식 5. 레지스터 간접 주소 지정 방식(register indirect addressing mode)

  • CPU, 메모리
  • 연산에 사용할 데이터를 메모리에 저장
  • 그 주소를 저장한 레지스터를 오퍼랜드 필드에 저장

profile
Junior Backend Developer

0개의 댓글