Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ISA
Search
Chen
October 17, 2022
Science
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ISA
Chen
October 17, 2022
More Decks by Chen
See All by Chen
Example ROP in MIPS
tiffany_04192
0
66
defense
tiffany_04192
0
84
Dijkstra’s Algorithm
tiffany_04192
0
130
Floyd-Warshall
tiffany_04192
0
100
Topological sort DFS
tiffany_04192
0
100
BFS
tiffany_04192
0
130
DFS
tiffany_04192
0
130
Cache behavior
tiffany_04192
0
95
Cache miss paper
tiffany_04192
0
120
Other Decks in Science
See All in Science
不動産業界における業界特化のデータ整備とAI活用 ─Vertical DataとVertical AI─
estie
1
890
データベース02: データベースの概念
trycycle
PRO
2
1.3k
AI(人工知能)の過去・現在・未来 ~AIは人類を越えるのか~
tagtag
PRO
0
140
LLMs vs Chess
ianozsvald
0
110
機械学習 - K近傍法 & 機械学習のお作法
trycycle
PRO
1
1.6k
データベース03: 関係データモデル
trycycle
PRO
1
790
明治薬科大学講義_ビッグデータ解析を支えるデータベース技術とクラウドコンピューティング
ktatsuya
1
150
Does the Efficient Compute Frontier Represent New Physics?
drqz
0
110
データベース10: 拡張実体関連モデル
trycycle
PRO
0
1.6k
データベース11: 正規化(1/2) - 望ましくない関係スキーマ
trycycle
PRO
0
1.7k
AkarengaLT vol.40
hashimoto_kei
0
120
Van Dare naar Durf
voginip
0
270
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Everyday Curiosity
cassininazir
0
280
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
250
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
630
Paper Plane
katiecoart
PRO
2
53k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.3k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
360
Transcript
91 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at 0000 0000 $v0 4242 4242 $v1 0000 8010 $a0 0000 1234 $a1 5678 0001 $a2 0000 0002 $a3 0000 0007 $t0 9999 999A $t1 0000 0000 $s0 0042 0420 $sp 0000 FFE0 $fp 0000 FFF0 $ra 0000 2348 PC 0000 1000 Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 FFD4 FFD0 FFCC FFC8 FFC4 FFC0 FFBC Just did jal 1000
92 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at 0000 0000 $v0 4242 4242 $v1 0000 8010 $a0 0000 1234 $a1 5678 0001 $a2 0000 0002 $a3 0000 0007 $t0 9999 999A $t1 0000 0000 $s0 0042 0420 $sp 0000 FFE0 $fp 0000 FFF0 $ra 0000 2348 PC 0000 1000 Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 FFD4 FFD0 FFCC FFC8 FFC4 FFC0 FFBC $sp, $fp still describe caller’s frame
93 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at 0000 0000 $v0 4242 4242 $v1 0000 8010 $a0 0000 1234 $a1 5678 0001 $a2 0000 0002 $a3 0000 0007 $t0 9999 999A $t1 0000 0000 $s0 0042 0420 $sp 0000 FFD0 $fp 0000 FFF0 $ra 0000 2348 PC 0000 1004 Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 FFD4 FFD0 FFCC FFC8 FFC4 FFC0 FFBC Allocate space on stack
94 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at 0000 0000 $v0 4242 4242 $v1 0000 8010 $a0 0000 1234 $a1 5678 0001 $a2 0000 0002 $a3 0000 0007 $t0 9999 999A $t1 0000 0000 $s0 0042 0420 $sp 0000 FFD0 $fp 0000 FFF0 $ra 0000 2348 PC 0000 1008 Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 FFD4 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC Save $fp
95 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at 0000 0000 $v0 4242 4242 $v1 0000 8010 $a0 0000 1234 $a1 5678 0001 $a2 0000 0002 $a3 0000 0007 $t0 9999 999A $t1 0000 0000 $s0 0042 0420 $sp 0000 FFD0 $fp 0000 FFF0 $ra 0000 2348 PC 0000 100C Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Save $ra Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 FFD4 0000 2348 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC
96 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at 0000 0000 $v0 4242 4242 $v1 0000 8010 $a0 0000 1234 $a1 5678 0001 $a2 0000 0002 $a3 0000 0007 $t0 9999 999A $t1 0000 0000 $s0 0042 0420 $sp 0000 FFD0 $fp 0000 FFF0 $ra 0000 2348 PC 0000 1010 Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Save $s0 Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 0042 0420 FFD4 0000 2348 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC
97 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at 0000 0000 $v0 4242 4242 $v1 0000 8010 $a0 0000 1234 $a1 5678 0001 $a2 0000 0002 $a3 0000 0007 $t0 9999 999A $t1 0000 0000 $s0 0042 0420 $sp 0000 FFD0 $fp 0000 FFDC $ra 0000 2348 PC 0000 1014 Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 0042 0420 FFD4 0000 2348 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC Setup $fp
98 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at 0000 0000 $v0 4242 4242 $v1 0000 8010 $a0 0000 1234 $a1 5678 0001 $a2 0000 0002 $a3 0000 0007 $t0 9999 999A $t1 0000 0000 $s0 0042 0420 $sp 0000 FFD0 $fp 0000 FFDC $ra 0000 2348 PC 0000 1014 Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra $sp, $fp now describe new frame, ready to start Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 0042 0420 FFD4 0000 2348 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC
99 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at 0000 0000 $v0 4242 4242 $v1 0000 8010 $a0 0000 1234 $a1 5678 0001 $a2 0000 0002 $a3 0000 0007 $t0 9999 999A $t1 0000 0000 $s0 5678 1235 $sp 0000 FFD0 $fp 0000 FFDC $ra 0000 2348 PC 0000 1018 Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 0042 0420 FFD4 0000 2348 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC Do some computation..
100 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at 0000 0000 $v0 4242 4242 $v1 0000 8010 $a0 0000 1234 $a1 5678 0001 $a2 0000 0002 $a3 0000 0007 $t0 9999 999A $t1 0000 0000 $s0 5678 1235 $sp 0000 FFD0 $fp 0000 FFDC $ra 0000 101C PC 0000 4200 Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Call another function (not pictured, takes no args) jal sets $ra, PC Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 0042 0420 FFD4 0000 2348 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC
101 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at ???? ???? $v0 ???? ???? $v1 ???? ???? $a0 ???? ???? $a1 ???? ???? $a2 ???? ???? $a3 ???? ???? $t0 ???? ???? $t1 ???? ???? $s0 ???? ???? $sp ???? ???? $fp ???? ???? $ra ???? ???? PC ???? ???? Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Other function can do what It wants to the regs as it computes And make a stack frame Of its own Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 0042 0420 FFD4 0000 2348 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC
102 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at ???? ???? $v0 8675 3090 $v1 ???? ???? $a0 ???? ???? $a1 ???? ???? $a2 ???? ???? $a3 ???? ???? $t0 ???? ???? $t1 ???? ???? $s0 5678 1235 $sp 0000 FFD0 $fp 0000 FFDC $ra 0000 101C PC 0000 101C Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 0042 0420 FFD4 0000 2348 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC But before it returns, it is responsible for restoring certain registers Including $sp and $fp, and $s0 Value returned in $v0
103 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at ???? ???? $v0 8675 3090 $v1 ???? ???? $a0 ???? ???? $a1 ???? ???? $a2 ???? ???? $a3 ???? ???? $t0 DCED 42C5 $t1 ???? ???? $s0 5678 1235 $sp 0000 FFD0 $fp 0000 FFDC $ra 0000 101C PC 0000 1020 Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 0042 0420 FFD4 0000 2348 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC Do some more computation
104 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at ???? ???? $v0 0001 0002 $v1 ???? ???? $a0 ???? ???? $a1 ???? ???? $a2 ???? ???? $a3 ???? ???? $t0 DCED 42C5 $t1 ???? ???? $s0 5678 1235 $sp 0000 FFD0 $fp 0000 FFDC $ra 0000 101C PC 0000 1024 Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 0042 0420 FFD4 0000 2348 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC Do some more computation (load addr not pictured)
105 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at ???? ???? $v0 0001 0002 $v1 ???? ???? $a0 ???? ???? $a1 ???? ???? $a2 ???? ???? $a3 ???? ???? $t0 DCED 42C5 $t1 ???? ???? $s0 0042 0420 $sp 0000 FFD0 $fp 0000 FFDC $ra 0000 101C PC 0000 1028 Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 0042 0420 FFD4 0000 2348 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC Restore registers to return
106 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at ???? ???? $v0 0001 0002 $v1 ???? ???? $a0 ???? ???? $a1 ???? ???? $a2 ???? ???? $a3 ???? ???? $t0 DCED 42C5 $t1 ???? ???? $s0 0042 0420 $sp 0000 FFD0 $fp 0000 FFDC $ra 0000 2348 PC 0000 102C Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 0042 0420 FFD4 0000 2348 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC Restore registers to return
107 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at ???? ???? $v0 0001 0002 $v1 ???? ???? $a0 ???? ???? $a1 ???? ???? $a2 ???? ???? $a3 ???? ???? $t0 DCED 42C5 $t1 ???? ???? $s0 0042 0420 $sp 0000 FFD0 $fp 0000 FFF0 $ra 0000 2348 PC 0000 1030 Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 0042 0420 FFD4 0000 2348 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC Restore registers to return
108 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at ???? ???? $v0 0001 0002 $v1 ???? ???? $a0 ???? ???? $a1 ???? ???? $a2 ???? ???? $a3 ???? ???? $t0 DCED 42C5 $t1 ???? ???? $s0 0042 0420 $sp 0000 FFE0 $fp 0000 FFF0 $ra 0000 2348 PC 0000 1034 Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 0042 0420 FFD4 0000 2348 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC Restore registers to return
109 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at ???? ???? $v0 0001 0002 $v1 ???? ???? $a0 ???? ???? $a1 ???? ???? $a2 ???? ???? $a3 ???? ???? $t0 DCED 42C5 $t1 ???? ???? $s0 0042 0420 $sp 0000 FFE0 $fp 0000 FFF0 $ra 0000 2348 PC 0000 1034 Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 0042 0420 FFD4 0000 2348 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC Now $sp, $fp describe caller’s frame Restore registers to return
110 Execution Example: Calling With Frames Reg Value $0 0000
0000 $at ???? ???? $v0 0001 0002 $v1 ???? ???? $a0 ???? ???? $a1 ???? ???? $a2 ???? ???? $a3 ???? ???? $t0 DCED 42C5 $t1 ???? ???? $s0 0042 0420 $sp 0000 FFE0 $fp 0000 FFF0 $ra 0000 2348 PC 0000 2348 Addr Instruction 1000 subiu $sp, $sp, 16 1004 sw $fp, 0($sp) 1008 sw $ra, 4($sp) 100C sw $s0, 8($sp) 1010 addiu $fp, $sp, 12 1014 add $s0, $a0, $a1 1018 jal 4200 101C add $t0, $v0, $s0 1020 lw $v0, 4($t0) 1024 lw $s0, -4($fp) 1028 lw $ra, -8($fp) 102C lw $fp, -12($fp) 1030 addiu $sp, $sp, 16 1034 jr $ra Addr Value FFF0 0001 0070 FFEC 1234 5678 FFE8 9999 9999 FFE4 0000 2568 FFE0 0001 0040 FFDC FFD8 0042 0420 FFD4 0000 2348 FFD0 0000 FFF0 FFCC FFC8 FFC4 FFC0 FFBC Return to caller (code not pictured)