![Page 1: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/1.jpg)
mith College
Computer Science
Dominique Thiébaut [email protected]
CSC231—AssemblyWeek #13 — Fall 2017
![Page 2: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/2.jpg)
D. Thiebaut, Computer Science, Smith College
Pascal Trianglefor n in 0 1 2 5 ; do echo "n =$n" ./hw7b $n echo "" done
n =0
n =1 1
n =2 1 0 1 1
n =5 1 0 0 0 0 1 1 0 0 0 1 2 1 0 0 1 3 3 1 0 1 4 6 4 1
![Page 3: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/3.jpg)
D. Thiebaut, Computer Science, Smith College
Short/Long Jumps
if ( x < y ) { f1(x);}else { f2(y);}
if ( x >= y ) { f2(y);}else { f1(x);}
![Page 4: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/4.jpg)
D. Thiebaut, Computer Science, Smith College
Short/Long Jumps
if: cmp eax, ebx jge elsethen:… … jmp endIfelse:… …endIf:
![Page 5: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/5.jpg)
D. Thiebaut, Computer Science, Smith College
Short/Long Jumps
if: cmp eax, ebx jge elsethen:… … jmp endIfelse:… …endIf:
if: cmp eax, ebx jl then jmp elsethen:… … jmp endIfelse:… …endIf:
same
![Page 6: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/6.jpg)
D. Thiebaut, Computer Science, Smith College
RECURSION
http://i.imgur.com/WcEmMx3.jpg
![Page 7: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/7.jpg)
D. Thiebaut, Computer Science, Smith College
Python 3.5.0b1 (v3.5.0b1:071fefbb5e3d, May 23 2015, 18:22:54) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwinType "copyright", "credits" or "license()" for more information.
>>> def fact( n ): if n <= 1: return 1 return n * fact( n - 1 )
>>> fact( 3 )6>>> fact( 5 )120>>> fact( 20 )2432902008176640000>>> fact( 100 )93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000>>>
1 if n<=1n! = n * (n-1)! otherwise{
![Page 8: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/8.jpg)
D. Thiebaut, Computer Science, Smith College
Class Exercise:Act out the Play
"Compute Fact(5)"
![Page 9: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/9.jpg)
D. Thiebaut, Computer Science, Smith College
Class Exercise 2:Write a PythonProgram with a
main() function anda fact() function
![Page 10: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/10.jpg)
D. Thiebaut, Computer Science, Smith College
Using Python as example, write fact(n) in Assembly
![Page 11: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/11.jpg)
D. Thiebaut, Computer Science, Smith College
![Page 12: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/12.jpg)
D. Thiebaut, Computer Science, Smith College
Question 1
• What is the largest value of n the assembly and recursive version of fact can compute? Note: there are several possible good answers…
![Page 13: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/13.jpg)
D. Thiebaut, Computer Science, Smith College
We stopped here last time…
![Page 14: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/14.jpg)
D. Thiebaut, Computer Science, Smith College
Single-Steppingthe Assembly Code Computing Fact(3)
![Page 15: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/15.jpg)
D. Thiebaut, Computer Science, Smith College
3 eax 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
esp
![Page 16: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/16.jpg)
D. Thiebaut, Computer Science, Smith College
33 eax 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
esp
![Page 17: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/17.jpg)
D. Thiebaut, Computer Science, Smith College
3ret addr _printInt
3 eax 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
esp
![Page 18: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/18.jpg)
D. Thiebaut, Computer Science, Smith College
3ret addr _printInt
old ebp
3 eax 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
esp
![Page 19: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/19.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebp
3 eax 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 20: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/20.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
3 eax 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 21: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/21.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
3 eax 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 22: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/22.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
3 eax 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 23: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/23.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
3 eax: 3 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 24: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/24.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
3 eax: 2 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 25: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/25.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2
3 eax: 2 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
esp
ebp
![Page 26: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/26.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mul
3 eax: 2 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
esp
ebp
![Page 27: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/27.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
3 eax: 2 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
esp
ebp
![Page 28: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/28.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
3 eax: 2 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 29: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/29.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edx
3 eax: 2 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 30: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/30.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edx
3 eax: 2 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 31: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/31.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edx
3 eax: 2 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 32: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/32.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edx
3 eax: 2 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 33: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/33.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edx
3 eax: 1 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 34: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/34.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edx1
3 eax: 1 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
esp
ebp
![Page 35: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/35.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edx1
ret addr mul
3 eax: 1 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
esp
ebp
![Page 36: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/36.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edx1
ret addr mulold ebp (E8)
3 eax: 1 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
esp
ebp
![Page 37: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/37.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edx1
ret addr mulold ebp (E8)
3 eax: 1 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 38: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/38.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edx1
ret addr mulold ebp (E8)
old edx
3 eax: 1 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 39: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/39.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edx1
ret addr mulold ebp (E8)
old edx
3 eax: 1 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 40: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/40.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edx1
ret addr mulold ebp (E8)
old edx
3 eax: 1 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 41: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/41.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edx1
ret addr mulold ebp (E8)
old edx
3 eax: 1 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 42: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/42.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edx1
ret addr mulold ebp (E8)
old edx
3 eax: 1 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 43: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/43.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edx1
ret addr mulold ebp (E8)
XXXXX
3 eax: 1 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 44: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/44.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edx1
ret addr mulXXXXXXXXXX
3 eax: 1 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
esp
ebp
![Page 45: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/45.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edxXXXXXXXXXXXXXXXXXXXX
3 eax: 1 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
![Page 46: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/46.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
old edxXXXXXXXXXXXXXXXXXXXX
3 eax: 2 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
edx: 0
![Page 47: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/47.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mulold ebp (F8)
XXXXXXXXXXXXXXXXXXXXXXXXX
3 eax: 2 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebp
edx: xxxx
![Page 48: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/48.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edx
2ret addr mul
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3 eax: 2 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
esp
ebpedx: xxxx
![Page 49: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/49.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3 eax: 2 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebpedx: xxxx
![Page 50: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/50.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpold edxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3 eax: 6 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebpedx: 0
![Page 51: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/51.jpg)
D. Thiebaut, Computer Science, Smith College
3red addr _printInt
old ebpXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3 eax: 6 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
espebpedx: XXX
![Page 52: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/52.jpg)
D. Thiebaut, Computer Science, Smith College
3ret addr _printInt
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3 eax: 6 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
esp
ebp
edx: XXX
![Page 53: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/53.jpg)
D. Thiebaut, Computer Science, Smith College
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3 eax: 6 100FCF8F4F0ECE8E4E0DCD8D4D0CCC8C4C0BCB8B4B0AC
esp
ebp
edx: XXX
![Page 54: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/54.jpg)
D. Thiebaut, Computer Science, Smith College
Following the pathof the Execution
for fact(3)…
![Page 55: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/55.jpg)
D. Thiebaut, Computer Science, Smith College
![Page 56: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/56.jpg)
D. Thiebaut, Computer Science, Smith College
Java Version
getcopy Factorial.java
Does it break down at some point?
![Page 57: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/57.jpg)
D. Thiebaut, Computer Science, Smith College
Compare to Non-RecursiveVersion
getcopy factorialNonRecursive.asm
![Page 58: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/58.jpg)
D. Thiebaut, Computer Science, Smith College
Question 2
• Compare the execution time of the recursive version of factorial() to its non-recursive version. (Use the assembly versions to answer this question)
![Page 59: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/59.jpg)
D. Thiebaut, Computer Science, Smith College
• count the number of cycles for each
• for N!, non-recursive # steps= k1 + 2(N)
• for N! recursive # steps = k2 + 13(N)
![Page 60: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/60.jpg)
D. Thiebaut, Computer Science, Smith College
Question 3
• If the maximum stack size given to a program is 8 GBytes, how many terms could the assembly fact() function compute, at most, if we didn't care about multiplication overflow? Note: We can get the default stack size linux uses with ulimit -a
![Page 61: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/61.jpg)
D. Thiebaut, Computer Science, Smith College
Question 4
• What are the space complexities for the recursive and non-recursive versions of Factorial?
![Page 62: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/62.jpg)
D. Thiebaut, Computer Science, Smith College
• For the recursive version, we have n stack frames in the stack when computing n! Each stack frame contains 1) n, 2) the return address, 3) old ebp, 4) old edx, or 4x4 bytes = 16 bytes. Total stack space= 16n bytes = O(n)
• For the non-recursive version, we have 3 dwords in the stack: 1) return address, 2) old edx, and 3) old ecx. Total stack space = 3x3 = 9 bytes = O(1)
![Page 63: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/63.jpg)
D. Thiebaut, Computer Science, Smith College
Towers of Hanoi…in Assembly
• In Python first
• In Assembly next
https://media-cdn.tripadvisor.com/media/photo-s/0f/00/ee/18/ulun-danu-bratan-temple.jpg
![Page 64: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/64.jpg)
D. Thiebaut, Computer Science, Smith College
main program calling hanoiUser provides N, # of disks
![Page 65: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/65.jpg)
D. Thiebaut, Computer Science, Smith College
![Page 66: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/66.jpg)
D. Thiebaut, Computer Science, Smith College
Version 1
![Page 67: CSC231—Assembly · 2017. 11. 29. · F8 F4 F0 EC E8 E4 E0 DC D8 D4 D0 CC C8 C4 C0 BC B8 B4 B0 AC esp. D. Thiebaut, Computer Science, Smith College 3 ret addr _printInt old ebp 3](https://reader036.vdocuments.mx/reader036/viewer/2022071412/61093b97edd0e93a5e3e4ea1/html5/thumbnails/67.jpg)
D. Thiebaut, Computer Science, Smith College
Version 2