I've been learning assembly language by disassembling some C code. When I disassemble this basic C code with GDB:
#include <stdio.h>
void main(void) {
printf("Hello World\n");
}
Among assembly code, it gives this line:
0x08048424 <+25>: call 0x80482e0 <puts@plt>
However, when I disassemble below code which has an integer in printf function:
#include <stdio.h>
void main(void) {
int a = 1;
printf("Hello Word %d\n", a);
}
It gives this line:
0x0804842e <+35>: call 0x80482e0 <printf@plt>
What is the difference between printf@plt and puts@plt?
Why disassembler does not recognize printf function without an integer parameter?