sliver__

2.7 Instructions for Making decision 본문

CS/컴퓨터 구조

2.7 Instructions for Making decision

sliver__ 2023. 10. 20. 14:41
728x90

Conditional branch

register1, 2가 같으면 Label L1으로 이동해라.

    beq register1, register2, L1

register1, 2가 같지 않으면 Label L1으로 이동해라.

    bne register1, register2, L1

 

Quiz) 아래 수식을 assembly language로 바꾸면?

     if (i == j) f = g + h; else f = g – h;

==>

     bne $s3,$s4,Else   # go to Else if i ≠ j
     add $s0,$s1,$s2    # f = g + h (skipped if i ≠ j)
     j Exit     # go to Exit
     Else:sub $s0,$s1,$s2  # f = g – h (skipped if i = j)
     Exit:

 

Unconditional branch

 

j Label : Label로 jump(j) 해라

 

Loops

Quiz) 아래 Loop문을 assembly language로 변환하면?

while (save[i] == k)

i += 1;

==>

Loop: sll $t1,$s3,2 # Temp reg $t1 = i * 4
add $t1,$t1,$s6 # $t1 = address of save[i]
lw $t0,0($t1) # Temp reg $t0 = save[i]
bne $t0,$s5, Exit   # go to Exit if save[i] ≠ k
addi $s3,$s3,1 # i = i + 1
j     Loop          # go to Loop
Exit:
 
sigend int 는 아래와 같다.
slt $t0, $s3, $s4 #$s3 < $s4 이면 $t0는 1 , 아니면 0
slti    $t0,$s2,10    #$t0 = 1 if $s2 < 10
 

unsigned int 는 아래와 같다.

sltu $t0, $s3, $s4 #$s3 < $s4 이면 $t0는 1 , 아니면 0
sltiu   $t0,$s2,10    #$t0 = 1 if $s2 < 10
 
 

case/switch statement

jump address table이 존재하고 index에 해당하는 array의 주소로 이동

728x90

'CS > 컴퓨터 구조' 카테고리의 다른 글

2.9 Communicating with People  (0) 2023.10.21
2.8 Supporting Procedures in Computer Hardware  (0) 2023.10.21
2.6 Logical Operations  (0) 2023.10.20
2.5 Representing Instruction in the Computer  (1) 2023.10.20
2.4 Signed and Unsigned Numbers  (1) 2023.10.19
Comments