명령어 (13) - 대소 비교 (<)

컴퓨터구조

2020. 4. 8. 16:24

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

 

컴퓨터구조

이 과목에서는 컴퓨터 시스템의 구성, 동작원리와 설계를 다룬다. 특히 컴퓨터 성능, 명령집합, 제어와 마이크로프로그래밍, 파이프라인, 정수와 부동 소수점수 연산, 기억부 시스템, 입출력 부시스템, 고급 컴퓨터구조 등과 같은 내용에 중점을 둔다. 교과목을 통해 고속 Data Network 시스템에 들어가는 여러 Processors를 이해하고, 이들을 설계 또는 Programming 할 수 있는 능력을 배양한다.

www.kocw.net