Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

보근은 참고 있다

2.7 판단을 위한 명령어 본문

CS/컴퓨터 구조

2.7 판단을 위한 명령어

보근 2020. 10. 14. 22:18

 

 

 

 

 

 

 컴퓨터가 단순한 계산기와 다른 점은 판단 기능이 있다는 것이다. 

 

 

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------

 

 

 

 

 

 

 

 판단을 위한 명령어에는 beq, ② bne, ③ slt, ④ slti, ⑤ sltu, ⑥ sltiu 들이 있다.

 

 

 

 

 

 ① beq (Branch if EQual)② bne (Branch if Not Equal) 두 명령어들은 두 값이 같은지 다른지 결과에 따라 프로그램 내의 다른 주소로 제어를 넘길 수 있다. 이것을 조건부 분기라고 한다.(if-then-else)

 

 beq는 두 피연산자를 비교해 같으면 새로운 주소로 이동, 같지 않으면 직후의 명령어를 수행하고,

② bne는 두 피연산자를 비교해 다르면 새로운 주소로 이동, 같으면 직후의 명령어를 수행한다.

 

ex) beq $s0, $s1, L1  // $s0의 값과 $s1의 값이 같으면 L1에 해당하는 문장으로 이동     bne $s0, $s1, L1 

// $s0의 값과 $s1의 값이 다르면 L1에 해당하는 문장으로 이동

 

  • 조건부 분기 외에도 순환문 등에도 쓰인다.

 

 

 

 

 두 변수의 대소 비교가 필요한 경우도 있다. 그 경우에 쓰이는 명령어가 ③ slt (Set on Less Than)④ slti(Set on Less Than Immediate)이다.

 

③ slt은 두 피연산자 rs와 rt를 비교해 rs < rt라면 rd에 1의 값을, rs >= rt라면 rd에 0의 값을 주고,

④ slti는 레지스터 값과 상수를 비교해 rs < constant라면 rt에 1의 값을, rs >= constant라면 rt에 0의 값을 준다.

 

ex) slt $t0, $s0, $s1  // $s0 < $s1 이면 $t0 = 1, $s0 >= $s1 이면 $t0 = 0

     slti $t0, $s0, 10  // $s0 < 10 이면 $t0 = 1, $s0 >= 10 이면 $t0 = 0

 

 위의 대소 비교 연산자들은 부호있는 수의 경우이고, 부호없는 수의 경우는 ⑤ sltu (Set on Less Than Unsigned), ⑥ sltiu (Set on Less Than Immediate Unsigned)가 있다.

  • MIPS 컴파일러는 slt, slti, beq, bne와 0번 레지스터 $zero의 상수 0을 이용해 모든 비교 조건(같다, 다르다, 작다, 작거나 같다, 크다, 크거나 같다)을 만들 수 있다.
  • 간단한게 좋다는 하드웨어 설계 원칙에 따라 MIPS는 복잡한 blt(Branch on Less Than) 명령어를 제외시켰다.

 

 

 

 

 

 

 

 

 

 

Comments