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
|
.data
ch: .space 11
.text
#main
# prologue
addiu $29, $29, -16
# scanf
ori $2, $0, 5
syscall
sw $2, 4($29)
# chaine[10] = 0
lui $8, 0x1001
sb $0, 10($8)
# i = 9
lw $9, 0($29) # i
ori $9, $0, 9
sw $9, 0($29)
while:
# i >= 0
lw $9, 0($29)
bltz $9, end_while
# corps
# r = nb % 10
lw $10, 4($29) # nb
ori $11, $0, 10
div $10, $11
mfhi $12 # r
# nb /= 10
mflo $10
sw $10, 4($29)
# chaine[i] = r + 0x30
# *(chaine + i) = r + 0x30
addu $13, $8, $9
addiu $12, $12, 0x30
sb $12, 0($13)
# i -= 1
addiu $9, $9, -1
sw $9, 0($29)
j while
end_while:
ori $2, $0, 4
or $4, $0, $8
syscall
# épilogue
addiu $29, $29, 16
ori $2, $0, 10
syscall
|