본문 바로가기
CONCEPT/Computer Architecture

[컴퓨터구조] 소스코드와 명령어

by 1005 2025. 2. 15.

 

 

고급언어: 개발자가 이해하기 쉽게 만든 언어  ex) C, C++, JAVA

저급언어: 컴퓨터가 이해하고 실행하는 언어  ex) 기계어, 어셈블리어 

기계어: 0과 1로 이루어진 명령어로 구성된 저급언어 

어셈블리어: 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급 언어

인터프리터 언어: 인터프리터에 의해 한 줄씩 실행, 소스코드 전체가 저급 언어로 변환되기까지 기다릴 필요 없음.

Compiler Explorer

 

Compiler Explorer

 

godbolt.org


명령어(Instruction): 연산코드와 오퍼랜드로 구성.

-> 메모리(RAM)에 저장되어 있다가 CPU 내부의 명령어 레지스터(IR, Instruction Register)로 불러와서 실행됨.

 

연산코드(Opcode): 수행할 연산

오퍼랜드(Operand): 연산에 사용될 데이터 or 연산에 사용될 데이터가 저장된 위치(=주소 필드)  <-- 논리적인 개념!

 

 

연산코드

1) 데이터 전송

 

2) 산술/논리 연산

 

3) 제어 흐름 변경: 특정 메모리 주소로 실행의 순서를 점프해서 옮기는 유형의 연산 코드 

 

4) 입출력 제어


명령어 주소 지정 방식을 쓰는 이유는?

하나의 오퍼랜드에 저장할 수 있는 데이터 크기가 작아서 "주소 데이터"를 넣는게 메모리 활용하기 유리함.

CPU가 메모리에 접근하는 속도보다 레지스터에 접근하는 속도가 더 빠름 (why? 레지스터는 CPU안에 속해있으니까)

유효주소(effective address)

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

 

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

: 연산에 사용할 데이터가 저장된 위치(메모리, 레지스터)를 찾는 방법, 유효 주소를 찾는 방법, 다양한 명령어 주소 지정 방식

 

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

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

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

: 오퍼랜드 필드에 유효 주소 직접적으로 명시, 유효 주소를 표현할 수 있는 크기가 연산 코드만큼 줄어듦. 

 

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

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

 

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

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

 

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

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

 

댓글