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
87
Dijkstra’s Algorithm
tiffany_04192
0
130
Floyd-Warshall
tiffany_04192
0
100
Topological sort DFS
tiffany_04192
0
100
BFS
tiffany_04192
0
140
DFS
tiffany_04192
0
130
Cache behavior
tiffany_04192
0
97
Cache miss paper
tiffany_04192
0
120
Other Decks in Science
See All in Science
Understanding CVP Waveforms: Interpretation and Clinical Implications in Anesthesiology
taka88
0
850
(CVPR2026) Back to Basics: Let Denoising Generative Models Denoise
shumpei777
0
340
AI(人工知能)の過去・現在・未来 ~AIは人類を越えるのか~
tagtag
PRO
0
160
データベース05: SQL(2/3) 結合質問
trycycle
PRO
0
1.3k
機械学習 - 決定木からはじめる機械学習
trycycle
PRO
0
1.6k
人生を変えた一冊「独学大全」のはなし / Self-study ENCYCLOPEDIA: The Book Which Change My Life #独学大全 #EM推し本
expajp
0
200
Does the Efficient Compute Frontier Represent New Physics?
drqz
0
110
Inside the Mind of an LLM
baggiponte
0
240
コーヒー豆様核 (Coffee-bean nuclei) における形態学的サブタイピングと精選・焙煎特性の同定
jagupath
PRO
0
160
[NLP2026 参加報告会] AI for Science まとめ / NLP2026
lychee1223
0
2k
CVPR2026_VGGTとその仲間たち
mickey_0226
0
1.1k
機械学習 - 授業概要
trycycle
PRO
0
610
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Rails Girls Zürich Keynote
gr2m
96
14k
We Are The Robots
honzajavorek
0
330
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
800
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
490
How to make the Groovebox
asonas
2
2.4k
エンジニアに許された特別な時間の終わり
watany
108
250k
GraphQLとの向き合い方2022年版
quramy
50
15k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
520
Bash Introduction
62gerente
615
220k
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)