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
|
.text
# some data
.word 0xdeadbeef
.word 0xdeadbeef
.word 0xdeadbeef
.word 0xdeadbeef
# some real code, compiled from a toy C program
.globl main
.ent main
main:
.frame $fp,32,$31 # vars= 16, regs= 2/0, args= 0, extra= 0
.mask 0xc0000000,-8
.fmask 0x00000000,0
subu $sp,$sp,32
sd $31,24($sp)
sd $fp,16($sp)
move $fp,$sp
jal __main
li $2,2 # 0x2
sw $2,0($fp)
lw $2,0($fp)
move $3,$2
sll $4,$3,1
addu $2,$4,$2
sw $2,4($fp)
lw $4,4($fp)
jal g
lw $3,0($fp)
move $2,$3
b $L1
$L1:
move $sp,$fp
ld $31,24($sp)
ld $fp,16($sp)
addu $sp,$sp,32
j $31
.end main
.align 2
.globl g
.ent g
g:
.frame $fp,32,$31 # vars= 16, regs= 1/0, args= 0, extra= 0
.mask 0x40000000,-16
.fmask 0x00000000,0
subu $sp,$sp,32
sd $fp,16($sp)
move $fp,$sp
sw $4,0($fp)
lw $2,0($fp)
addu $3,$2,1
move $2,$3
b $L2
$L2:
move $sp,$fp
ld $fp,16($sp)
addu $sp,$sp,32
j $31
.end g
|