일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- align-items
- pandas
- 포토샵
- c
- series
- CSS
- 알고리즘
- skt membership
- 확률
- Flexbox
- 백준
- Design Pattern
- dataframe
- SK바이오사이언스
- grid
- Javascript
- 강화학습
- Photoshop
- Gap
- 소수
- spring
- Codility
- Prefix Sums
- 상태
- stl
- 통신사할인
- margin
- 수학
- c++
- 에라토스테네스의 체
Archives
- Today
- Total
sliver__
2.7 Instructions for Making decision 본문
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