괴발나라

컴퓨터 명령어를 간단히 알아보자 본문

도서/혼자공부하는 컴퓨터 구조 + 운영체제

컴퓨터 명령어를 간단히 알아보자

괴발맨 2023. 6. 7. 20:50

명령어 구조

- 연산코드 필드: 연산 명령어가 담기는 부분 

   - ex) 더해라, 빼라, 데이터 저장해라, 데이터 불러와라 등

오퍼랜드 필드: 연산 대상이 담기는 부분

   - ex) 데이터, 메모리 주소, 레지스터 주소

- 구조 예시

   - [ 연산코드 | 오퍼랜드 | 오퍼랜드 ] -> "add eax, edx"

- 오퍼랜드는 0개 ~ 여러개까지 있을 수 있음..

 

* 일반적으로 피연산 데이터를 직접 오퍼랜드 필드에 담지 않고 그 데이터가 저장된 위치를 저장함.

   - 왜 ? -> 오퍼랜드 필드에 담을 수 있는 데이터 크기가 너무 작음.. 그래서 데이터를 따로 저장해놓고 그 주소의 위치를 담음. -> 이 주소. 즉, 피연산 데이터가 담긴 저장장치의 주소를 "유효주소"라고 함.

 

주소 지정 방식

- 주소 지정 방식은 오퍼랜드 필드에 피연산자를 담는 방식임.

- 즉시 주소 지정 방식

  - 데이터를 오퍼랜드 필드에 바로 담는 방식.

   - CPU가 메모리에 따로 접근할 필요가 없어 빠르긴 하지만 담을 수 있는 데이터 크기가 너무 작음

- 직접 주소 지정 방식

   - 데이터를 메모리에 넣어놓고 그 주소를 오퍼랜드 필드에 담는 방식

   - 다시 말해 유효주소를 오퍼랜드 필드에 담는다

   - 메모리에 한번만 접근해도 돼서 빠르긴 하나 이것도 표현할 수 있는 유효 주소에 한계가 있음.

- 간접 주소 지정 방식

   - 데이터를 메모리에 넣어놓고 그 주소를 또 메모리에 넣어놓고 그 주소를 오퍼랜드 필드에 담는다.

   - 다시 말해 유효주소의 주소를 오퍼랜드 필드에 담는다.

   - 표현할 수 있는 유효주소의 범위가 직접 주소 지정 방식보다 넓어짐.

   - 하지만 메모리에 두번 접근해야돼서 속도는 더 느림.

- 레지스터 주소 지정 방식

   - 직접 주소 지정 방식과 동일한데 메모리->레지스터로 변경

   - 당연히 레지스터 접근 속도가 더 빠르기떄문에 직접 주소 지정 방식보다 더 빠름

   - 단점은 동일.

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

   -  데이터를 메모리에 넣어 놓고 그 주소를 레지스터에 넣어 놓고 그 레지스터 주소를 오퍼랜드 필드에 담음

   - 레지스터에 한번, 메모리에 한번 접근하기 때문에 간접주소지정방식보다 속도가 빠름.