221031 TIL

apwierk·2022년 10월 31일
0

TIL

목록 보기
26/33

모든 소스코드(프로그래밍 언어)와 명령어로 변환된다.

고급 언어와 저급 언어

고급 언어: 사람을 위한 언어 (프로그래밍 언어)
저급 언어: 컴푸터가 직접 이해하고 실행할 수 있는 언어

고급언어 -> 저급 언어 로 변환되어야 함

저급언어는 2가지 종류가 있다.

  • 기계어: 0과 1의 명령어 비트로 이루어진 언어
    이진수로 나열할 경우 너무 기러져 가독성을 위해 십육진수로 표현하기도 한다.
  • 어셈블리어: 0과 1로 이루어진 기계어를 사람이 읽기 편한 형태로 변역한 언어
    ex) 0101 0101 = push rbp ...
    주로 프로그램을 개발하는 임베디드 개발자, 게임 개발자, 정보 보안 분야 등의 개발자들이 사용한다.

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

: 개발자들이 고급 언어로 작성한 소스코드는 결국 저급 언어로 변환되어 실행된다고 했는데, 이 변환 방식은 크게 두 가지가 있다.

컴파일 언어 (C)

: 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어

  • 컴파일러는 소스 코드 전체를 문법적인 오류는 없는지, 실행 가능한 지, 불필요한 코드는 없는지 따지면서 소스 코드를 저급 언어로 컴파일한다. 오류가 하나라도 발견될 경우 컴파일에 실패한다.
    이 과정을 통해 컴파일된 코드를 목적 코드라고 한다.

인터프리터 언어 (Python)

: 소스 코드를 한 줄씩 저급 언어로 변환하여 실행하는 도구

  • 한 줄씩 코드를 실행하기 때문에 오류가 발견되더라도 오류가 발견되기 이전까지의 코드는 모두 실행된다.

일반적으로 인터프리터 언어는 컴파일 언어보다 느리다.
프로그래밍 언어를 컴파일, 인터프리터 둘 중 하나로 단정 짓기는 어렵다. 웬만한 언어들은 둘 다 가능하기에 이러한 방식이 있다는 것을 이해하는 것이 중요

연산 코드와 오퍼랜드

: 명령어는 연산 코드와 오퍼랜드로 구성되어있다.

연산 코드: 명령어가 수행할 연산 (연산자)

오퍼랜드: 연산에 사용할 데이터가 저장된 위치 (피연산자) -> 주로 주소가 담김

주소 지정 방식

: 유효 주소를 찾는 것

유효주소

: 연산 코드에 사용할 데이터가 저장된 위치, 즉 연산의 대상이 되는 데이터가 저장된 위치

즉시 주소 지정 방식

: 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식

직접 주소 지정 방식

: 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식

간접 주소 지정 방식

: 유효 주소의 주소를 오퍼랜드 필드에 명시한다.

레지스터 주소 지정 방식

: 직접 주소 지정 방식과 비슷하게 연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시하는 방법

레지스터 간접 주소 지정 방식

: 연산에 사용할 데이터를 메모리에 저장하고, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시하는 방법

스택과 큐

  • 스택: 한쪽 끝이 막혀 있는 통과 같은 저장 공간 ( LIFO )
    PUSH, POP
  • 큐: 양쪽이 뚫려 있는 통과 같은 저장 공간 ( FIFO )
profile
iOS 꿈나무 개발자

0개의 댓글