-
[Computer Science] 명령어 : 명령어의 구조Computer Science 2024. 5. 9. 16:03
명령어의 구조와 명령어의 주소지정 방식에 대하여 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'
< 명령어의 구조 >
명령어는 오퍼랜드와 연산 코드로 구성됨.
Ex)
"영수야 (오퍼랜드), 방 좀 치워줘! (연산 코드) "
"멍멍아 (오퍼랜드), 이거 물어와! (연산 코드) "
출처 : 인프런 '혼자공부하는 컴퓨터구조 + 운영체제'
< 오퍼랜드 >
연산에 사용될 데이터 or 연산에 사용될 데이터가 저장된 위치(=주소 필드)
오퍼랜드는 0개일 수도, 1개일 수도, 2개 이상일 수도 있음출처 : 인프런 '혼자공부하는 컴퓨터구조 + 운영체제' 보통 오퍼랜드에는 연산에 사용될 데이터보다, 연산에 사용될 데이터가 저장된 위치가 훨씬 더 많이 저장됩니다.
< 연산 코드 >
명령어가 수행할 연산
다양한 연산코드가 있지만 공통적인 연상코드 종류
- 데이터 전송
- 산술/논리 연산
- 제어 흐름 변경
- 입출력 제어데이터 전송
- MOVE : 데이터를 옮겨라
- MOVE : 메모리에 저장하라
- 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을 호출할 때 저장했던 주소로 돌아가라
입출력 제어
- READ (INPUT) : 특정 입출력 장치로부터 데이터를 읽어라
- WRITE (OUTPUT) : 특정 입출력 장치로 데이터를 써라
- START IO : 입출력 장치를 시작하라
- TEST IO : 입출력 장치의 상태를 확인하라
연산코드의 종류와 생김새는 CPU마다 다릅니다. 공통적으로
1. 데이터 전송
2. 산술/논리 연산
3. 제어 흐름 변경
4. 입출력 제어
가 있다고 보시면 좋을 것 같습니다.
< 명령어 주소 지정 방식 >
명령어 내에서 표현할 수 있는 데이터의 크기가 제한적이기 때문에, 오퍼랜드에 일정 크기 이상의 데이터가 필요할 경우 오퍼랜드에 주소를 지정하는 방식을 사용.
명령어 주소 지정 방식 : 연산에 사용할 데이터가 저장된 위치(=유효 주소)를 찾는 방법
유효 주소 : 연산에 사용할 데이터가 저장된 위치출처 : 인프런 '혼자공부하는 컴퓨터구조 + 운영체제'
< 즉시 주소 지정 방식 >
연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시
연산에 사용할 데이터의 크기가 제한적이지만. 빠름출처 : 인프런 '혼자공부하는 컴퓨터구조 + 운영체제'
< 직접 주소 지정 방식 >
오퍼랜드 필드에 유효 주소 직접적으로 명시
유효 주소를 표현할 수 있는 크기가 연산 코드만큼, 오퍼랜드 개수만큼 줄어듦출처 : 인프런 '혼자공부하는 컴퓨터구조 + 운영체제'
< 간접 주소 지정 방식 >
오퍼랜드 필드에 유효 주소의 주소를 명시
앞선 주소 지정 방식들에 비해 속도가 느림출처 : 인프런 '혼자공부하는 컴퓨터구조 + 운영체제'
< 레지스터 주소 지정 방식 >
오퍼랜드 필드에 연산에 사용할 데이터가 저장된 레지스터를 명시
메모리에 접근하는 속도보다 레지스터에 접근하는 것이 빠름출처 : 인프런 '혼자공부하는 컴퓨터구조 + 운영체제'
< 레지스터 간접 주소 지정 방식 >
연산에 사용할 데이터를 메모리에 저장하고, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시
출처 : 인프런 '혼자공부하는 컴퓨터구조 + 운영체제'
위 뿐만 아니라, 특정 레지스터를 이용한 주소 지정 방식 또한 존재합니다.
- 스택 주소 지정 방식 : 스택과 스택 포인터를 이용한 주소 지정 방식
- 변위 주소 지정 방식 : 오퍼랜드 필드의 값(변위)과 특정 레지스터의 값을 더하여 유효 주소를 얻는 방식'Computer Science' 카테고리의 다른 글
[Computer Science] CPU : 레지스터 (0) 2024.05.10 [Computer Science] CPU : ALU와 제어장치 (0) 2024.05.09 [Computer Science] 명령어 : 소스 코드와 명령어 (0) 2024.05.09 [Computer Science] 데이터 : 0과 1로 문자를 표현하는 방법 (0) 2024.05.09 [Computer Science] 데이터 : 0과 1로 숫자를 표현하는 방법 (0) 2024.05.08