67
mith College Computer Science Dominique Thiébaut [email protected] CSC231—Assembly Week #13 — Fall 2017

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

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

D. Thiebaut, Computer Science, Smith College

Version 2