-
Notifications
You must be signed in to change notification settings - Fork 5
/
20200521_SoluzioneHw2.asm
67 lines (57 loc) · 1.57 KB
/
20200521_SoluzioneHw2.asm
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
###################################################
### HOMEWORK 2 ###
###################################################
# E’ dato un albero binario di interi in memoria. ###
# L’etichetta del nodo è 0 se il nodo è sano, ###
# 1 se il nodo è malato. Scrivere una funzione che calcoli ###
# la distanza del più vicino nodo malato alla radice. ###
# La distanza è 0 se la radice è malata, ###
# 1 se la radice è sana e un figlio è malato, ###
# 2 se radice e figli sono sani e uno dei figli dei figli è malato.
# E così via. -1 se nessuno è malato. ###
# Si scriva anche il main del programma che chiama la ###
# funzione su un albero in memoria e stampa a video il risultato.
###################################################################
# soluzione hw2 facoltativo - dato un albero restituire l'altezza quando si trova il valore "1"
.data
tree: .word n01
n01: .word 0, n02, n03
n02: .word 0, n04, n05
n03: .word 0, n06, n07
n04: .word 1, 0, 0
n05: .word 0, 0, 0
n06: .word 0, 0, 0
n07: .word 0, 0, 0
.text
lw a0, tree
jal covid
li a7, 1
ecall
li a7, 10
ecall
covid: bne a0, zero, ric
li a0, -1
jalr zero, ra, 0
ric: lw t0, 0(a0)
beq t0, zero, skip
li a0, 0
jalr zero, ra, 0
skip: addi sp, sp, -12
sw ra, 0(sp)
sw a0, 4(sp)
lw a0, 4(a0)
jal covid
sw a0, 8(sp)
lw a0, 4(sp)
lw a0, 8(a0)
jal covid
lw t0, 8(sp) # radice sana
# t0 sa sx
# a0 dist sa dx
bleu a0, t0, skip2
mv a0, t0
skip2: blt a0, zero, skip3
addi a0, a0, 1
skip3: lw ra, 0(sp)
addi sp, sp, 12
jalr zero, ra, 0