Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
68
defense
tiffany_04192
0
91
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
機械学習 - K近傍法 & 機械学習のお作法
trycycle
PRO
1
1.7k
データ駆動型ゲノム解析で迫る睡眠研究
tagtag
PRO
0
120
バランスって大事だね
akasan
1
150
presen_司法書士学員会.pdf
tagtag
PRO
1
110
サンプル対応のない複数遺伝子発現プロファイルに対するテンソル分解型統合解析の要約
tagtag
PRO
0
260
東北地方における過去20年間の降水量の変化
naokimuroki
1
520
データベース06: SQL (3/3) 副問い合わせ
trycycle
PRO
1
1.1k
CVPR2026_VGGTとその仲間たち
mickey_0226
0
1.2k
Inside the Mind of an LLM
baggiponte
0
350
チュートリアル:世界モデル
hf149
0
2.3k
Toward Causal Scientific Discovery with AI
sshimizu2006
0
190
[第67回 CV勉強会@関東] CV × Scientific Figures / kantoCV 67th CVPR 2026
lychee1223
0
240
Featured
See All Featured
Optimizing for Happiness
mojombo
378
71k
Embracing the Ebb and Flow
colly
88
5.2k
The World Runs on Bad Software
bkeepers
PRO
72
12k
エンジニアに許された特別な時間の終わり
watany
109
250k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Amusing Abliteration
ianozsvald
1
320
How Software Deployment tools have changed in the past 20 years
geshan
2
34k
Evolving SEO for Evolving Search Engines
ryanjones
0
300
We Have a Design System, Now What?
morganepeng
55
8.3k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
840
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Navigating Weather and Climate Data
rabernat
0
540
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)