imname1am 2023. 12. 17. 23:14
반응형

🧩 소스 코드와 명령어

 소스 코드와 명령어

 소스 코드 | 고급 언어. 개발자가 이해하고 실행하는 언어 ( =원시 코드)

 명령어      | 저급 언어. 컴퓨터가 이해하고 실행하는 언어

  ㄴ1) 기계어         : 0과 1

  ㄴ2) 어셈블리어 : 기계어를 읽기 편한 형태로 번역한 저급 언어

 

 

 컴파일 언어 vs 인터프리트 언어

컴파일 언어

 소스 코드 > 컴파일러 > 목적 코드

  (고급 언어                           저급 언어)

▪ 컴파일러 : 컴파일 언어로 작성된 소스 코드를 저급 언어로 변환

 한꺼번에 실행

 

인터프리트 언어

 인터프리터에 의해 한 줄씩 실행

 

 

Compiler Explorer

 

godbolt.org

 

 

 

🧩 명령어의 구조와 주소 지정 방식

○ 명령어 구조

① 연산 코드, ② 오퍼랜드

 

1. 연산 코드 : 수행할 연산

     종류

       1) 데이터 전송       

               -  MOVE, STORE, LOAD(FETCH), PUSH, POP

       2) 산술/논리 연산

               - ADD / SUBTRACT / MULTIPLY / DIVIDE

               - INCREMENT / DECREMENT

               - AND / OR / NOT

               - COMPARE

       3) 제어 흐름 변경

               -  JUMP                           : 특정 주소로 실행 순서 옮기기

               -  CONDITIONAL JUMP : 조건에 부합할 때 특정 주소로 실행 순서 옮기기

               -  HALT                            : 프로그램 실행 STOP

               -  CALL                            : 되돌아올 주소 저장한 채 특정 주소로 실행 순서를 옮기기

               -  RETURN                      : CALL 호출 시 저장했던 주소로 돌아가기

       4) 입출력 제어

               -   READ (INPUT)       : 특정 입출력 장치로부터 데이터 읽기

               -   WRITE (OUTPUT) : 특정 입출력 장치로 데이터 쓰기

               -   START IO               : 입출력 장치 시작

               -   TEST IO                 : 입출력 장치 상태 확인

 

 

2. 오퍼랜드  : 연산에 사용될 데이터 / 연산에 사용될 데이터가 저장된 위치 (= 주소 필드)

    저장된 위치 사용 이유 - 명령어 내 표현 가능한 데이터 크기 제한 때문

    오퍼랜드 갯수 - 없는 경우도 있고, 하나 이상인 경우도 있음 (0-주소 ~ 3-주소 명령어)

 

○ 명령어 주소 지정 방식

1. 유효 주소 (effective address)

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

 

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

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

 

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

  - "연산에 사용할 데이터"를 오퍼랜드 필드에 직접 명시

  - 가장 간단한 형태

  - 연산에 사용할 데이터 크기는 작아질 수 있으나, 빠름

 

 

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

  - 오퍼랜드 필드에 "유효 주소" 직접적으로 명시

  - 유효 주소를 표현할 수 있는 크기, 연산 코드만큼 줄어듦

 

 

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

  - 오퍼랜드 필드에 "유효 주소의 주소" 명시

  - 속도 느림

(+ 메모리 접근을 최소화하는 것이 무조건 속도 면에서 좋다)

 

 

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

  - "연산에 사용할 데이터가 저장된 레지스터" 명시

  - 레지스터에 접근하는 속도가 메모리에 접근하는 속도보다 빠름

 

 

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

 

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

 

 


(참고)

https://youtu.be/B8TDaBp3UWo?feature=shared

https://youtu.be/bWPHUi6BPxo?feature=shared

 

반응형