명령어의 구조
저급언어에는 기계어와 어셈블리어로 이루어져 있는데 이런 저급언어는 명령어들로 이루어져 있음.
명령어의 구조 ( == 연산 코드 + 오퍼랜드)
연산 코드(수행할 연산) + 오퍼랜드(연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치(==주소필드))
**오퍼랜드의 개수는 여러개가 될수도 있고 하나도 없을 수도 있다.(하나도 없는경우 0주소, 한개인 경우 1주소, 두개인 경우 2주소 등 오퍼팬드의 갯수에 따라 "갯수+ 주소"로 불릴수 있음.)
연산코드란 수행할 연산을 뜻함
- 연산 코드의 종류와 생김새는 CPU에 따라 다르지만 공통적으로 들어가는 요소들 4가지가 있음(1. 데이터 전송. 2.산술/논리 연산. 3. 제어 흐름 변경. 4. 입출력 제어)
대표적인 연산 코드의 종류
- 데이터 전송
- move : 데이터를 옮겨라
- store : 메모리에 저장하라
- load(fetch) : 메모리에서 CPU로 데이터를 가져와라
- push : 스택에 데이터를 저장하라
- pop : 스택의 최상단 데이터를 가져와라
- 산술/논리 연산
- ADD/ SUBTRACT/ MULTIPLY / DIVIDE: 덧셈, 뺄셈, 곱셈, 나눗셈을 수행해라
- INCREMENT / DECREMENT: 오퍼랜드에 1을 더해라, 1을 빼라
- AND / OR/ NOT:AND / OR / NOT 연산을 수행하라
- COMPARE: 두개의 숫자 또는 TRUE/FALSE값을 비교해라
- 제어흐름 변경 - 특정 메모리 주소로 실행의 순서를 옮기는 연산코드
- JUMP: 특정 주소로 실행 순서를 옮겨라
- CONDITIONAL JUMP : 조건에 부합할 때 특정 주소로 실행 순서를 옮겨라.
- HALT : 프로그램의 실행을 멈춰라
- CALL : 되돌아올 주소를 저장한 채 특정 주소로 실행 순서를 옮겨라
- RETURN : CALL을 호출할 때 저장했던 주소로 돌아가라
- *call과 return : 특정 함수를 실행하고 다시 돌아가라
- 입출력 제어
- READ(INPUT): 특정 입출력 장치로부터 데이터를 읽어라
- WRITE(OUTPUT): 특정 입출력 장치로 데이터를 써라
- START IO: 입출력 장치를 시작하라
- TEST IO: 입출력 장치의 상태를 확인하라
오퍼랜드에 저장된 위치인 주소값으로 저장하는 이유
- 하나의 오퍼랜드에 표현될 수 있는 데이터의 크기가 훨씬 커짐
명령어 주소 지정 방식
- 유효주소(effective adress): 연산에 사용할 데이터가 저장된 위치
- 명령어 주소 지정방식(addressing modes): 연산에 사용할 데이터가 저장된 위치를 찾는 방법 == 유효 주소를 찾는 방법, 다양한 명령어 주소 지정 방식들이 있음.
명령어 주소 지정 방식
- 즉시 주소 지정 방식(immediate addressing mode): 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시, 가장 간단한 형태의 주소 지정 방식, 단점으론 연산에 사용할 데이터의 크기가 작아질수 있지만 빠름.
- 직접 주소 지정 방식(direct addressing mode) : 오퍼랜드 필드에 유효 주소 직접적으로 명시, 단점으론 유효 주소를 표현할 수 있는 크기가 연산 코드만큼 줄어듦.
- 간접 주소 지정 방식(indirect addressing mode): 오퍼랜드 필드에 유효 주소의 주소를 명시, 단점으론 앞선 주소지정 방식들에 비해 속도가 느림. >>메모리를 뒤적뒤적해서 느림
- 레지스터 주소 지정 방식(register addressing mode): 연산에 사용할 데이터가 저장된 레지스터 명시, 메모리에 접근하는 속도보다 레지스터에 접근하는 것이 빠름.
- 레지스터 간접 주소 지정 방식(register indirect addressing mode) : 연산에 사용할 데이터를 메모리에 저장, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시
728x90
반응형
'컴퓨터 구조' 카테고리의 다른 글
컴퓨터 구조 ) 레지스터, 명령어 사이클, 인터럽트에 대해 알아보자. (0) | 2024.02.07 |
---|---|
컴퓨터 구조 ) CPU를 구성하는 구성품 중 ALU와 제어장치에 대해 알아보자. (0) | 2024.02.06 |
컴퓨터 구조 ) 고급 언어와 저급 언어, 컴파일 언어와 인터프리트 언어란?? (0) | 2024.01.25 |
컴퓨터 구조 ) 문자 집합과 인코딩에 대해 알아보자. (0) | 2024.01.25 |
컴퓨터 구조 ) 컴퓨터 구조에 대해 알아보자. (0) | 2024.01.23 |