asum - william & marybren/cs304sp17/slides/asum.ys.pdf · asum.ys----changes to memory and...

36
Asum.ys ----Changes to memory and registers Ruiqin Tian

Upload: others

Post on 28-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

Asum.ys----Changes to memory and registers

Ruiqin Tian

Page 2: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack, %ebp # Set up base pointer

address stack

0X100 %esp, %ebp

0Xfc

0Xf8

0xf4

0xf0

0xec

register

%eax

%ecx

%edx

%ebx

%esi

%edi

%esp 0X100

%ebp 0X100

PC

0xc

ZF SF CF

1 0 0

2

Page 3: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

7. call main

address stack

0X100 %ebp

0Xfc %esp 0X11

0Xf8

0xf4

0xf0

0xec

register

%eax

%ecx

%edx

%ebx

%esi

%edi

%esp 0xfc

%ebp 0X100

PC

0x24

ZF SF CF

1 0 0

3

Page 4: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

17. Main: pushl %ebp

address stack

0X100 %ebp

0Xfc 0X11

0Xf8 %esp 0X100

0xf4

0xf0

0xec

register

%eax

%ecx

%edx

%ebx

%esi

%edi

%esp 0Xf8

%ebp 0X100

PC

0x26

ZF SF CF

1 0 0

4

Page 5: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

18. rrmovl %esp,%ebp

address stack

0X100

0Xfc 0X11

0Xf8 %esp, %ebp 0X100

0xf4

0xf0

0xec

register

%eax

%ecx

%edx

%ebx

%esi

%edi

%esp 0Xf8

%ebp 0Xf8

PC

0x28

ZF SF CF

1 0 0

5

Page 6: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 %ebp 0X100

0xf4 %esp 4

0xf0

0xec

19. irmovl $4,%eax 20. pushl %eax # Push 4

register

%eax 4

%ecx

%edx

%ebx

%esi

%edi

%esp 0Xf4

%ebp 0Xf8

PC

0x30

ZF SF CF

1 0 0

6

Page 7: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 %ebp 0X100

0xf4 4

0xf0 %esp 0X14

0xec

21. irmovl array,%edx22. pushl %edx

register

%eax 4

%ecx

%edx 0X14

%ebx

%esi

%edi

%esp 0Xf0

%ebp 0Xf8

PC

0x38

ZF SF CF

1 0 0

7

Page 8: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 %ebp 0X100

0xf4 4

0xf0 0X14

0xec %esp 0X3d

23. call Sum

register

%eax 4

%ecx

%edx 0X14

%ebx

%esi

%edi

%esp 0Xec

%ebp 0Xf8

PC

0x42

ZF SF CF

1 0 0

8

Page 9: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

30.Sum: pushl %ebp31. rrmovl %esp,%ebp

register

%eax 4

%ecx

%edx 0X14

%ebx

%esi

%edi

%esp 0Xe8

%ebp 0Xe8

PC

0x46

ZF SF CF

1 0 0

9

Page 10: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

32. mrmovl 8(%ebp),%ecx # ecx = Start

33. mrmovl 12(%ebp),%edx # edx = Count

register

%eax 4

%ecx 0X14

%edx 4

%ebx

%esi

%edi

%esp 0Xe8

%ebp 0Xe8

PC

0x52

ZF SF CF

1 0 0

10

Page 11: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

34. xorl %eax,%eax # sum = 0

register

%eax 0

%ecx 0X14

%edx 4

%ebx

%esi

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

0 0 0

PC

0x54

11

Page 12: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

35. andl %edx,%edx # Set condition codes

register

%eax 0

%ecx 0X14

%edx 4

%ebx

%esi

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

1 0 0

PC

0x56

12

Page 13: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

36. je End

register

%eax 0

%ecx 0X14

%edx 4

%ebx

%esi

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

1 0 0

PC

0x5b

13

Page 14: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

37.Loop: mrmovl (%ecx),%esi # get *Start

register

%eax 0

%ecx 0X14

%edx 4

%ebx

%esi 0Xd

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

1 0 0

PC

0x61

14

Page 15: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

38. addl %esi,%eax # add to sum

39. irmovl $4,%ebx #

register

%eax 0Xd

%ecx 0X14

%edx 4

%ebx 4

%esi 0Xd

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

1 0 0

PC

0x69

15

Page 16: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

40. addl %ebx,%ecx # Start++

41. irmovl $-1,%ebx #

register

%eax 0Xd

%ecx 0X18

%edx 4

%ebx -1

%esi 0Xd

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

1 0 0

PC

0x71

16

Page 17: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

42. addl %ebx,%edx # Count--

43. jne Loop # Stop when 0

register

%eax 0Xd

%ecx 0X18

%edx 3

%ebx -1

%esi 0Xd

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

1 0 0

PC

0x5b

17

Page 18: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

37. Loop: mrmovl (%ecx),%esi # get *Start

38. addl %esi,%eax # add to sum

register

%eax 0Xcd

%ecx 0X18

%edx 3

%ebx -1

%esi 0Xc0

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

1 0 0

PC

0x63

18

Page 19: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

39. irmovl $4,%ebx #

40. addl %ebx,%ecx # Start++

register

%eax 0Xcd

%ecx 0X1c

%edx 3

%ebx 4

%esi 0Xc0

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

1 0 0

PC

0x6b

19

Page 20: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

41. irmovl $-1,%ebx #

42. addl %ebx,%edx # Count--

register

%eax 0Xcd

%ecx 0X1c

%edx 2

%ebx -1

%esi 0Xc0

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

1 0 0

PC

0x73

20

Page 21: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

43. jne Loop # Stop when 0

register

%eax 0Xcd

%ecx 0X1c

%edx 2

%ebx -1

%esi 0Xc0

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

1 0 0

PC

0x5b

21

Page 22: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

37. Loop: mrmovl (%ecx),%esi # get *Start

38. addl %esi,%eax # add to sum

register

%eax 0Xbcd

%ecx 0X1c

%edx 2

%ebx -1

%esi 0Xb00

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

1 0 0

PC

0x63

22

Page 23: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

39. irmovl $4,%ebx #

40. addl %ebx,%ecx # Start++

register

%eax 0Xbcd

%ecx 0X20

%edx 2

%ebx 4

%esi 0Xb00

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

1 0 0

PC

0x6b

23

Page 24: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

41. irmovl $-1,%ebx #

42. addl %ebx,%edx # Count--

register

%eax 0Xbcd

%ecx 0X20

%edx 1

%ebx -1

%esi 0Xb00

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

1 0 0

PC

0x73

24

Page 25: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

43. jne Loop # Stop when 0

register

%eax 0Xbcd

%ecx 0X20

%edx 1

%ebx -1

%esi 0Xb00

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

1 0 0

PC

0x5b

25

Page 26: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

37. Loop: mrmovl (%ecx),%esi # get *Start

38. addl %esi,%eax # add to sum

register

%eax 0Xabcd

%ecx 0X20

%edx 1

%ebx -1

%esi 0Xa000

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

1 0 0

PC

0x63

26

Page 27: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

39. irmovl $4,%ebx #

40. addl %ebx,%ecx # Start++

register

%eax 0Xabcd

%ecx 0X24

%edx 1

%ebx 4

%esi 0Xa000

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

1 0 0

PC

0x6b

27

Page 28: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

41. irmovl $-1,%ebx #

42. addl %ebx,%edx # Count--

register

%eax 0Xabcd

%ecx 0X24

%edx 0

%ebx -1

%esi 0Xa000

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

0 0 0

PC

0x73

28

Page 29: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

43. jne Loop # Stop when 0

register

%eax 0Xabcd

%ecx 0X24

%edx 0

%ebx -1

%esi 0Xa000

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

0 0 0

PC

0x78

29

Page 30: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 %esp, %ebp 0Xf8

44. End: rrmovl %ebp,%esp

register

%eax 0Xabcd

%ecx 0X24

%edx 0

%ebx -1

%esi 0Xa000

%edi

%esp 0Xe8

%ebp 0Xe8

ZF SF CF

0 0 0

PC

0x7a

30

Page 31: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 %ebp 0X100

0xf4 4

0xf0 0X14

0xec %esp 0X3d

0Xe8 0Xf8

45. popl %ebp

register

%eax 0Xabcd

%ecx 0X24

%edx 0

%ebx -1

%esi 0Xa000

%edi

%esp 0Xec

%ebp 0Xf8

ZF SF CF

0 0 0

PC

0x7c

31

Page 32: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 %ebp 0X100

0xf4 4

0xf0 %esp 0X14

0xec 0X3d

0Xe8 0Xf8

46. ret

register

%eax 0Xabcd

%ecx 0X24

%edx 0

%ebx -1

%esi 0Xa000

%edi

%esp 0Xec

%ebp 0Xf8

ZF SF CF

0 0 0

PC

0X3d

32

Page 33: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100

0Xfc 0X11

0Xf8 %esp, %ebp 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 0Xf8

24. rrmovl %ebp,%esp

register

%eax 0Xabcd

%ecx 0X24

%edx 0

%ebx -1

%esi 0Xa000

%edi

%esp 0Xf8

%ebp 0Xf8

ZF SF CF

0 0 0

PC

0x3f

33

Page 34: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100 %ebp

0Xfc %esp 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 0Xf8

25. popl %ebp

register

%eax 0Xabcd

%ecx 0X24

%edx 0

%ebx -1

%esi 0Xa000

%edi

%esp 0Xfc

%ebp 0X100

ZF SF CF

0 0 0

PC

0X100

34

Page 35: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100 %esp, %ebp

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 0Xf8

26. ret

register

%eax 0Xabcd

%ecx 0X24

%edx 0

%ebx -1

%esi 0Xa000

%edi

%esp 0X100

%ebp 0X100

ZF SF CF

0 0 0

PC

0X11

35

Page 36: Asum - William & Marybren/cs304sp17/slides/asum.ys.pdf · Asum.ys----Changes to memory and registers Ruiqin Tian. 5.init: irmovl Stack, %esp # Set up stack pointer 6. irmovl Stack,

address stack

0X100 %esp, %ebp

0Xfc 0X11

0Xf8 0X100

0xf4 4

0xf0 0X14

0xec 0X3d

0Xe8 0Xf8

8. halt

register

%eax 0Xabcd

%ecx 0X24

%edx 0

%ebx -1

%esi 0Xa000

%edi

%esp 0X100

%ebp 0X100

ZF SF CF

0 0 0

PC

36