1. Immediate Operand
- 기존 Arithmetic Operand의 경우 모든 오퍼랜드가 레지스터 오퍼랜드였음.
- Immediate Operand는 그 중 하나의 오퍼랜드가 상수값을 갖는 경우이다.
- addi s3, s3, 4 라고 하면 s3 = s3 + 4가 된다. 상수가 오퍼랜드인 경우 addi를 사용한다.
- 그러나 이런 Immediate Operand의 경우 음수를 addi하는 것은 가능하지만, subi같은 것은 없다.
- 즉, 어떤 상수값을 빼고 싶으면 addi로 음수를 더해서 빼야한다.
2. Constant Zero
- MIPS 레지스터 중에는 zero라는 레지스터가 있다. 이 레지스터는 항상 0을 가지고 있다.
- 이 0은 move Instruction을 구현하기 위해 사용된다.
- add t2, t1, 0과 같이 구현하면 t2를 t1으로 옮기는 것으로 해석할 수 있다.
Design Principle 3.
Make Common Case Fast (일반적으로 자주나오는 경우를 더 빠르게하자)
- 작은 값의 상수는 프로그래밍시 자주 사용한다. (0, 1, 2, ...)
- 그러나 Immediate Operand나 Constant Zero를 지원하지 않는다면, 작은 상수를 사용할 때에도 메모리에서 데이터를 로드해야하기 때문에 상대적으로 느릴 것이다 (lw를 한번 더 사용하기 때문에)
3. Reference
'컴퓨터구조' 카테고리의 다른 글
명령어 (9) - I Format (0) | 2020.04.08 |
---|---|
명령어 (8) - R Format (0) | 2020.04.08 |
명령어 (7) - 이진 표현법 (0) | 2020.04.08 |
명령어 (5) - MIPS 레지스터 (0) | 2020.04.08 |
명령어 (4) - 메모리 오퍼랜드 (1) | 2020.04.08 |
명령어 (3) - 바이트 주소, 엔디안 (0) | 2020.04.08 |
명령어 (2) - 산술연산, 레지스터 개요 (0) | 2020.04.08 |