I'm learnin about assembler language right now. The code examples in the book I'm learning from are all compiled on a x86 32bit machine (i think) with gcc. To match my outputs with the one from the book i compiled my simple helloworld.c with "gcc -m32".
#include <stdio.h>
int main(){
int i;
for(i=0;i<10;i++){
printf("Hello World!\n");
}
return 0;
}
The output i get from running "objdump -D a32.out | grep -A20 main.:" looks like this:
0000051d <main>:
51d: 8d 4c 24 04 lea 0x4(%esp),%ecx
521: 83 e4 f0 and $0xfffffff0,%esp
524: ff 71 fc pushl -0x4(%ecx)
527: 55 push %ebp
528: 89 e5 mov %esp,%ebp
52a: 53 push %ebx
52b: 51 push %ecx
52c: 83 ec 10 sub $0x10,%esp
52f: e8 ec fe ff ff call 420 <__x86.get_pc_thunk.bx>
534: 81 c3 cc 1a 00 00 add $0x1acc,%ebx
53a: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp)
541: eb 16 jmp 559 <main+0x3c>
543: 83 ec 0c sub $0xc,%esp
546: 8d 83 f0 e5 ff ff lea -0x1a10(%ebx),%eax
54c: 50 push %eax
54d: e8 5e fe ff ff call 3b0 <puts@plt>
552: 83 c4 10 add $0x10,%esp
555: 83 45 f4 01 addl $0x1,-0xc(%ebp)
559: 83 7d f4 09 cmpl $0x9,-0xc(%ebp)
55d: 7e e4 jle 543 <main+0x26>
But in the book it looks like this:
It misses the first three lines from the output I get and doesn't look anything like it except for the next two lines. Why is that ? And how can i change my compiler/disassembly settings to make it look alike ?