프로그램은 결국엔 여러 명령어로 구성되어있고, CPU는 명령어를 한개씩 불러와서 연산을 수행한다. 그런데 MIPS에는 이러한 명령어의 3가지 Format의 명령어가 존재한다. 첫번째는 R Format 부터알아보자.
1. R Format Instruction
두개의 오퍼랜드를 가지는 레지스터 2개와 연산 결과를 저장하는 레지스터 1개를 가리키는 명령어 구조이며, 일반적으로 Arithmetic Operation이나 Logic Operation에 사용된다. (add, sub, mul, div, and, or 등)
- opcode: funct와 함께 명령어의 종류를 나타낸다. (operation code)
- rs: 첫번째 오퍼랜드가 들어가는 레지스터의 주소를 담고 있다. (source register)
- rt: 두번째 오퍼랜드가 들어가는 레지스터의 주소를 담고 있다. (target register)
- rd: 결과값이 담길 레지스터의 주소를 담고 있다. (destination register)
- shamt: 얼마나 쉬프트 할지에 대한 정보를 담고있다 (shift amount)
- funct: opcode와 함께 명령어의 종류를 나타낸다 (function code)
2. Example of R Format Instruction
- add 경우 opcode는 special, rs는 s1, rt는 s2, rd는 t0, shamt는 0, funct는 add이다.
- 때문에 아래와 같이 명령어가 기계어로 번역된다.
- 사람은 기계어를 읽기 힘들기 때문에 어셈블리어를 사용한다.
- add, t0, s1, s2와 같은 MIPS Code도 어셈블리어의 일종이다.
- rs, rd, rt가 5바이트인 이유는 MIPS가 32개의 레지스터를 가지기 때문이다 ($2^5 = 32$)
- R format은 I나 J format에 비해 공간의 여유가 있기 때문에 opcode에 special 0을 쓰고
- 실제 명령어인 add는 funct 칸에 적고 사용한다.
3. Reference
'컴퓨터구조' 카테고리의 다른 글
명령어 (11) - 논리 연산 (0) | 2020.04.08 |
---|---|
명령어 (10) - 주소 지정 (0) | 2020.04.08 |
명령어 (9) - I Format (0) | 2020.04.08 |
명령어 (7) - 이진 표현법 (0) | 2020.04.08 |
명령어 (6) - Immediate 오퍼랜드, 상수 Zero (0) | 2020.04.08 |
명령어 (5) - MIPS 레지스터 (0) | 2020.04.08 |
명령어 (4) - 메모리 오퍼랜드 (1) | 2020.04.08 |