Date post: | 15-Apr-2017 |
Category: |
Technology |
Upload: | patrick-hawks |
View: | 342 times |
Download: | 0 times |
LC0:.ascii "The argument was %d\12\0".text.globl _main.def _main; .scl 2; .type 32; .endef
_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eax
8(%esp) argv
4(%esp) argc
(%esp) return addr
%esp 28ff2c %ebp old %ebp %eax $0
LC0:.ascii "The argument was %d\12\0".text.globl _main.def _main; .scl 2; .type 32; .endef
_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eax
8(%esp) argv
4(%esp) argc
(%esp) return addr
%esp 28ff2c %ebp old %ebp %eax $0
LC0:.ascii "The argument was %d\12\0".text.globl _main.def _main; .scl 2; .type 32; .endef
_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eax
12(%esp) argv
8(%esp) argc
4(%esp) return addr
(%esp) old %ebp
%esp 28ff28 %ebp old %ebp %eax $0
LC0:.ascii "The argument was %d\12\0".text.globl _main.def _main; .scl 2; .type 32; .endef
_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eax
12(%esp) argv
8(%esp) argc
4(%esp) return addr
(%esp) old %ebp
%esp 28ff28 %ebp old %ebp %eax $0
LC0:.ascii "The argument was %d\12\0".text.globl _main.def _main; .scl 2; .type 32; .endef
_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eax
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
%esp 28ff28 %ebp 28ff28 %eax $0
LC0:.ascii "The argument was %d\12\0".text.globl _main.def _main; .scl 2; .type 32; .endef
_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eax
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
%esp 28ff28 %ebp 28ff28 %eax $0
LC0:.ascii "The argument was %d\12\0".text.globl _main.def _main; .scl 2; .type 32; .endef
_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eax
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
%esp 28ff20 %ebp 28ff28 %eax $0
LC0:.ascii "The argument was %d\12\0".text.globl _main.def _main; .scl 2; .type 32; .endef
_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eax
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
%esp 28ff20 %ebp 28ff28 %eax $0
LC0:.ascii "The argument was %d\12\0".text.globl _main.def _main; .scl 2; .type 32; .endef
_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eax
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp)
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) %esp 28ff00 %ebp 28ff28 %eax $0
LC0:.ascii "The argument was %d\12\0".text.globl _main.def _main; .scl 2; .type 32; .endef
_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eax
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp)
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) %esp 28ff00 %ebp 28ff28 %eax $0
.ascii "The argument was %d\12\0"
.text
.globl _main
.def _main; .scl 2; .type 32; .endef_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eax
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp)
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) %esp 28ff00 %ebp 28ff28 %eax $0
.ascii "The argument was %d\12\0"
.text
.globl _main
.def _main; .scl 2; .type 32; .endef_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eax
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $1234
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) %esp 28ff00 %ebp 28ff28 %eax $0
.text
.globl _main
.def _main; .scl 2; .type 32; .endef_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $1234
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) %esp 28ff00 %ebp 28ff28 %eax $0
.text
.globl _main
.def _main; .scl 2; .type 32; .endef_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $1234
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) %esp 28ff00 %ebp 28ff28 %eax argv
.text
.globl _main
.def _main; .scl 2; .type 32; .endef_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $1234
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) %esp 28ff00 %ebp 28ff28 %eax argv
Address ofpointer toprog name
.globl _main
.def _main; .scl 2; .type 32; .endef_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoi
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $1234
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) %esp 28ff00 %ebp 28ff28 %eax argv
Address ofpointer toprog name
.globl _main
.def _main; .scl 2; .type 32; .endef_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoi
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $1234
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) %esp 28ff00 %ebp 28ff28 %eax argv+4
Address ofpointer to
first arg
.def _main; .scl 2; .type 32; .endef_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $1234
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) %esp 28ff00 %ebp 28ff28 %eax argv+4
Address ofpointer to
first arg
.def _main; .scl 2; .type 32; .endef_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $1234
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) %esp 28ff00 %ebp 28ff28 %eax argv[1]
pointer tofirst arg
_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eax
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $1234
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) %esp 28ff00 %ebp 28ff28 %eax argv[1]
_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eax
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $1234
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) argv[1] %esp 28ff00 %ebp 28ff28 %eax argv[1]
_main:pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eax
For our purposesargv[1] = "67"
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $1234
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) argv[1] %esp 28ff00 %ebp 28ff28 %eax argv[1]
pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)
For our purposesargv[1] = "67"
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $1234
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) argv[1] %esp 28ff00 %ebp 28ff28 %eax argv[1]
pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)
For our purposesargv[1] = "67"
_atoi grabs the char array at the address stored in (%esp), converts the ASCII string to an
int, and returns the int in %eax
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $1234
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) argv[1] %esp 28ff00 %ebp 28ff28 %eax argv[1]
pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)
For our purposesargv[1] = "67"
_atoi grabs the char array at the address stored in (%esp), converts the ASCII string to an
int, and returns the int in %eax
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $1234
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) argv[1] %esp 28ff00 %ebp 28ff28 %eax $67
movl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)movl $LC0, (%esp)
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $1234
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) argv[1] %esp 28ff00 %ebp 28ff28 %eax $67
movl %esp, %ebpandl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)movl $LC0, (%esp)
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $67
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) argv[1] %esp 28ff00 %ebp 28ff28 %eax $67
andl $-16, %espsubl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)movl $LC0, (%esp)call _printf
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $67
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) argv[1] %esp 28ff00 %ebp 28ff28 %eax $67
subl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)movl $LC0, (%esp)call _printfmovl $0, %eax
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $67
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp)
(%esp) argv[1] %esp 28ff00 %ebp 28ff28 %eax $67
subl $32, %espcall ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)movl $LC0, (%esp)call _printfmovl $0, %eax
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $67
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp) $67
(%esp) argv[1] %esp 28ff00 %ebp 28ff28 %eax $67
call ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)movl $LC0, (%esp)call _printfmovl $0, %eaxleave
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $67
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp) $67
(%esp) argv[1] %esp 28ff00 %ebp 28ff28 %eax $67
call ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)movl $LC0, (%esp)call _printfmovl $0, %eaxleave
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $67
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp) $67
(%esp) $LC0 %esp 28ff00 %ebp 28ff28 %eax $67
call ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)movl $LC0, (%esp)call _printfmovl $0, %eaxleave
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $67
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp) $67
(%esp) $LC0
$LC0 is the location in memoryof our format string.
"The argument was %d\12\0"
%esp 28ff00 %ebp 28ff28 %eax $67
call ___mainmovl $1234, 28(%esp)movl 12(%ebp), %eax
addl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)movl $LC0, (%esp)call _printfmovl $0, %eaxleaveret
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $67
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp) $67
(%esp) $LC0 %esp 28ff00 %ebp 28ff28 %eax $67
$LC0 is the location in memoryof our format string.
"The argument was %d\12\0"
movl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)movl $LC0, (%esp)call _printfmovl $0, %eaxleaveret
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $67
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp) $67
(%esp) $LC0 %esp 28ff00 %ebp 28ff28 %eax $67
movl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)movl $LC0, (%esp)call _printfmovl $0, %eaxleaveret
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $67
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp) $67
(%esp) $LC0 %esp 28ff00 %ebp 28ff28 %eax $0
movl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)movl $LC0, (%esp)call _printfmovl $0, %eaxleaveret
12(%ebp) argv
8(%ebp) argc
4(%ebp) return addr
(%ebp) old %ebp
28(%esp) $67
24(%esp)
20(%esp)
16(%esp)
12(%esp)
8(%esp)
4(%esp) $67
(%esp) $LC0 %esp 28ff00 %ebp 28ff28 %eax $0
movl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)movl $LC0, (%esp)call _printfmovl $0, %eaxleaveret
8(%esp) argv
4(%esp) argc
(%esp) return addr
%esp 28ff2c %ebp old %ebp %eax $0
8(%esp) argv
4(%esp) argc
(%esp) return addr
%esp 28ff2c %ebp old %ebp %eax $0
movl $1234, 28(%esp)movl 12(%ebp), %eaxaddl $4, %eaxmovl (%eax), %eaxmovl %eax, (%esp)call _atoimovl %eax, 28(%esp)movl 28(%esp), %eaxmovl %eax, 4(%esp)movl $LC0, (%esp)call _printfmovl $0, %eaxleaveret