1. slt (Set on Less Than)
- R format instruction이다.
- slt rd, rs, rt 라고 작성하면 rs < rt일때, rd의 값이 1이되고, 그렇지 않으면 0이 된다.
- slt를 이용해 if, else, while, for문 등에서 값의 대소비교를 수행할 수 있게 된다.
// C Code :
if (a > b)
a++;
b = a;
// MIPS Code :
// t0 = a, t1= b
main:
slt t2, t0, t1 // a < b ---> t2 = 1
beq t2, zero, L1 // t3 == 0 ---> goto L1
addi t0, zero, t1 // b = a + 0
L1:
addi t0, t0, 1 // a = a + 1
2. slti (Set on Less Than immediate)
- slt의 immediate 버전으로 I format instruction이다.
- slti rt, rs, constant와 같이 적으면 rs < constant이면 rt = 1이고, 그렇지 않으면 0이 된다.
// C Code :
if (a > 3)
a++;
// MIPS Code:
// a = t0
main:
slti t1, t0, 3
bne t1, zero, L1
L1:
addi t0, t0, 1
3. 왜 Branch Less Than 과 같은 명령어는 없을까?
- >나 <=와 같은 연산들은 ==, != 보다 훨씬 느리기 때문에 branch equal / not equal 만 제작했다.
- ==는 sub 한 값이 0과 같으면 구현 가능, !=는 sub한 값이 sub한 값이 0과 다르면 구현 가능.
- 그러나 <를 하나의 명령어로 구현하면 매우 느려지기 때문에 구현하지 않음.4.
4. sltu, sltui (unsigned number comparison)
- unsigned number의 대소비교시에는 뒤에 u를 붙인 sltu, sltui를 사용하면 된다.
- 사용방법은 기존의 것과 동일하다.
5. Reference
'컴퓨터구조' 카테고리의 다른 글
명령어 (16) - 프로시져 / 함수 (2) (0) | 2020.05.04 |
---|---|
명령어 (15) - MIPS 프로그래밍 해보기 (0) | 2020.05.04 |
명령어 (14) - 프로시져 / 함수 (1) (1) | 2020.05.01 |
명령어 (12) - 조건 연산, J Format (0) | 2020.04.08 |
명령어 (11) - 논리 연산 (0) | 2020.04.08 |
명령어 (10) - 주소 지정 (0) | 2020.04.08 |
명령어 (9) - I Format (0) | 2020.04.08 |