#include <stdio.h> | #include <stdio.h>
|
int main(int argc,char ** argv) | int main(int argc,char * argv[])
{ | {
|
for (register i=0 ;i <argc ;i++) | for (register i=0 ;i <argc ;i++)
printf("%s\n",*argv++); | printf("%s\n",argv[i]);
|
} | }
|
Dump of assembler code for function main: |
4 { | Dump of assembler code for function main:
0x0000000000400530 <+0>: push rbp | 4 {
0x0000000000400531 <+1>: mov rbp,rsp | 0x0000000000400530 <+0>: push rbp
0x0000000000400534 <+4>: push rbx | 0x0000000000400531 <+1>: mov rbp,rsp
0x0000000000400535 <+5>: sub rsp,0x18 | 0x0000000000400534 <+4>: push rbx
0x0000000000400539 <+9>: mov DWORD PTR [rbp-0x14],edi | 0x0000000000400535 <+5>: sub rsp,0x18
0x000000000040053c <+12>: mov QWORD PTR [rbp-0x20],rsi | 0x0000000000400539 <+9>: mov DWORD PTR [rbp-0x14],edi
| 0x000000000040053c <+12>: mov QWORD PTR [rbp-0x20],rsi
5 |
6 for (register i=0 ;i <argc ;i++) | 5
=> 0x0000000000400540 <+16>: mov ebx,0x0 | 6 for (register i=0 ;i <argc ;i++)
0x0000000000400545 <+21>: jmp 0x400561 <main+49> | => 0x0000000000400540 <+16>: mov ebx,0x0
0x000000000040055e <+46>: add ebx,0x1 | 0x0000000000400545 <+21>: jmp 0x400567 <main+55>
0x0000000000400561 <+49>: cmp ebx,DWORD PTR [rbp-0x14] | 0x0000000000400564 <+52>: add ebx,0x1
0x0000000000400564 <+52>: jl 0x400547 <main+23> | 0x0000000000400567 <+55>: cmp ebx,DWORD PTR [rbp-0x14]
0x0000000000400566 <+54>: mov eax,0x0 | 0x000000000040056a <+58>: jl 0x400547 <main+23>
| 0x000000000040056c <+60>: mov eax,0x0
|
7 printf("%s\n",*argv++); | 7 printf("%s\n",argv[i]);
0x0000000000400547 <+23>: mov rax,QWORD PTR [rbp-0x20] | 0x0000000000400547 <+23>: movsxd rax,ebx
0x000000000040054b <+27>: lea rdx,[rax+0x8] | 0x000000000040054a <+26>: lea rdx,[rax*8+0x0]
0x000000000040054f <+31>: mov QWORD PTR [rbp-0x20],rdx | 0x0000000000400552 <+34>: mov rax,QWORD PTR [rbp-0x20]
0x0000000000400553 <+35>: mov rax,QWORD PTR [rax] | 0x0000000000400556 <+38>: add rax,rdx
0x0000000000400556 <+38>: mov rdi,rax | 0x0000000000400559 <+41>: mov rax,QWORD PTR [rax]
0x0000000000400559 <+41>: call 0x400410 <puts@plt> | 0x000000000040055c <+44>: mov rdi,rax
| 0x000000000040055f <+47>: call 0x400410 <puts@plt>
8 |
9 } | 8
0x000000000040056b <+59>: add rsp,0x18 | 9 }
0x000000000040056f <+63>: pop rbx | 0x0000000000400571 <+65>: add rsp,0x18
0x0000000000400570 <+64>: pop rbp | 0x0000000000400575 <+69>: pop rbx
0x0000000000400571 <+65>: ret | 0x0000000000400576 <+70>: pop rbp
| 0x0000000000400577 <+71>: ret
End of assembler dump. | |
| End of assembler dump.
|
int main(int argc,char ** argv) | int main(int argc,char * argv[])
{ | {
|
for (register i=0 ;i <argc ;i++) | for (register i=0 ;i <argc ;i++)
printf("%s\n",*argv++); | printf("%s\n",argv[i]);
|
} | }
|
Dump of assembler code for function main: |
4 { | Dump of assembler code for function main:
0x0000000000400530 <+0>: push rbp | 4 {
0x0000000000400531 <+1>: mov rbp,rsp | 0x0000000000400530 <+0>: push rbp
0x0000000000400534 <+4>: push rbx | 0x0000000000400531 <+1>: mov rbp,rsp
0x0000000000400535 <+5>: sub rsp,0x18 | 0x0000000000400534 <+4>: push rbx
0x0000000000400539 <+9>: mov DWORD PTR [rbp-0x14],edi | 0x0000000000400535 <+5>: sub rsp,0x18
0x000000000040053c <+12>: mov QWORD PTR [rbp-0x20],rsi | 0x0000000000400539 <+9>: mov DWORD PTR [rbp-0x14],edi
| 0x000000000040053c <+12>: mov QWORD PTR [rbp-0x20],rsi
5 |
6 for (register i=0 ;i <argc ;i++) | 5
=> 0x0000000000400540 <+16>: mov ebx,0x0 | 6 for (register i=0 ;i <argc ;i++)
0x0000000000400545 <+21>: jmp 0x400561 <main+49> | => 0x0000000000400540 <+16>: mov ebx,0x0
0x000000000040055e <+46>: add ebx,0x1 | 0x0000000000400545 <+21>: jmp 0x400567 <main+55>
0x0000000000400561 <+49>: cmp ebx,DWORD PTR [rbp-0x14] | 0x0000000000400564 <+52>: add ebx,0x1
0x0000000000400564 <+52>: jl 0x400547 <main+23> | 0x0000000000400567 <+55>: cmp ebx,DWORD PTR [rbp-0x14]
0x0000000000400566 <+54>: mov eax,0x0 | 0x000000000040056a <+58>: jl 0x400547 <main+23>
| 0x000000000040056c <+60>: mov eax,0x0
|
7 printf("%s\n",*argv++); | 7 printf("%s\n",argv[i]);
0x0000000000400547 <+23>: mov rax,QWORD PTR [rbp-0x20] | 0x0000000000400547 <+23>: movsxd rax,ebx
0x000000000040054b <+27>: lea rdx,[rax+0x8] | 0x000000000040054a <+26>: lea rdx,[rax*8+0x0]
0x000000000040054f <+31>: mov QWORD PTR [rbp-0x20],rdx | 0x0000000000400552 <+34>: mov rax,QWORD PTR [rbp-0x20]
0x0000000000400553 <+35>: mov rax,QWORD PTR [rax] | 0x0000000000400556 <+38>: add rax,rdx
0x0000000000400556 <+38>: mov rdi,rax | 0x0000000000400559 <+41>: mov rax,QWORD PTR [rax]
0x0000000000400559 <+41>: call 0x400410 <puts@plt> | 0x000000000040055c <+44>: mov rdi,rax
| 0x000000000040055f <+47>: call 0x400410 <puts@plt>
8 |
9 } | 8
0x000000000040056b <+59>: add rsp,0x18 | 9 }
0x000000000040056f <+63>: pop rbx | 0x0000000000400571 <+65>: add rsp,0x18
0x0000000000400570 <+64>: pop rbp | 0x0000000000400575 <+69>: pop rbx
0x0000000000400571 <+65>: ret | 0x0000000000400576 <+70>: pop rbp
| 0x0000000000400577 <+71>: ret
End of assembler dump. | |
| End of assembler dump.