[혼공컴운] 혼공단 11기 - 1주차 (3장)

shyn26·2024년 1월 5일
0

혼공학습단

목록 보기
3/20

3. 명령어

3-1. 소스 코드와 명령어

[목표]

  • 프로그래밍 언어가 어떻게 명령어가 되어 실행되는지 알아보자!

고급 언어와 저급 언어

  • 고급언어(high-level programming language) : 사람을 위한 언어
  • 저급 언어(low-level programming language) : 컴퓨터가 직접 이해하고 실행할 수 있는 언어
    • 명령어는 저급 언어라서, 명령어가 실행되려면 반드시 고급 언어를 저급 언어로 변환 해야 함

[저급 언어 종류]

  1. 기계어(machine code) : 0과 1의 명령어 비트로 이루어진 언어

  2. 어셈블리어(assembly language) : 0과 1로 표현된 명령어(기계어)를 읽기 편한 형태로 번역한 언어 (어셈블리어도 명령어)

    어셈블리어를 작성하거나 관찰할 일이 거의 없는 개발자도 있지만, 하드웨어와 밀접하게 맞닿아 있는 프로그램을 개발하는 
     임베디드 개발자, 게임 개발자, 정보 보안 분야 등의 개발자는 아래와 같이 어셈블리어를 많이 이용
     
     개발 분야를 막론하고 앞서 설명한 고급 언어와 저급 언어의 차이를 이해하는 것은 매우 좋은 교양이기에, 
     이제 막 프로그래밍을 시작한 입문자라면 반드시 알아두는 것을 추천

컴파일 언어와 인터프리터 언어[고급언어]

  • 컴파일 언어 : 컴파일 방식으로 작동하는 프로그래밍 언어
  • 인터프리터 언어 : 인터프리트 방식으로 작동하는 프로그래밍 언어


3-2. 명령어의 구조

연산 코드와 오퍼랜드

  • 명령어는 연산 코드와 오퍼랜드로 구성
    • 연산 코드(operation code) : 명령어가 수행할 연산, 연산자
    • 오퍼랜드(operand) : 연산에 사용할 데이터 또는 연산에 사용할 데이터가 저장된 위치, 피연산자 -> 보통 데이터보다 데이터 위치 주소를 입력

주소 지정 방식

  • [WHY?] 왜 오퍼랜드 필드에 메모리나 레지스터의 주소를 넣나요?
    그냥 [연산코드 | 연산코드에 사용 될 데이터] 형식으로 명령어를 구성하면 안되나요?

    • 명령어 길이에 따라 표현할 수 있는 정보의 양이 한정되어 있기 때문에, 한정된 공간에 '데이터'보다는 '데이터의 주소'를 넣는 것이 더 많은 것을 표현할 수 있기 때문
  • 주소 지정 방식(addressing mode) : 오퍼랜드 필드에 데이터가 저장된 위치를 명시할 때 연산에 사용할 데이터 위치를 찾는 방법

    1. 즉시 주소 지정 방식 (immediate addressing mode) : 연산에 사용할 데이터
    2. 직접 주소 지정 방식 (direct addressing mode) : 유효 주소 (메모리 주소)
    3. 간접 주소 지정 방식 (indirect addressing mode) : 유효 주소의 주소
    4. 레지스터 주소 지정 방식 (register addressing mode) : 유효 주소 (레지스터 이름)
    5. 레지스터 주소 지정 방식 (register indirect addressing mode) : 유효 주소를 저장한 레지스터

[⭐️혼공단 미션 인증!⭐️]

스택(stack) : 나중에 저장한 데이터를 가장 먼저 빼내는 데이터 관리 방식

*후입선출, LIFO[Last In First Out]

큐(queue) : 가장 먼저 저장된 데이터를 가장 먼저 빼내는 데이터 관리 방식

*선입선출, FIFO[First In First Out]

profile
Without haste, but without rest - J.W. von Goethe

0개의 댓글