Этот простой привет мир:Objdump привет мир инструкции вызова
#include <stdio.h>
int main(void) {
printf("Hello, world!\n");
printf("Hello, world!\n");
return 0;
}
дает следующую сборку в objdump:
/helloworld.c:3 804842c: 83 ec 0c sub $0xc,%esp 804842f: 68 f0 84 04 08 push $0x80484f0 8048434: e8 b7 fe ff ff call 80482f0 8048439: 83 c4 10 add $0x10,%esp /helloworld.c:4 804843c: 83 ec 0c sub $0xc,%esp 804843f: 68 f0 84 04 08 push $0x80484f0 8048444: e8 a7 fe ff ff call 80482f0 8048449: 83 c4 10 add $0x10,%esp
- Почему же вызов ставит имеют разные шестнадцатеричные коды (b7 vs a7)?
- e8 является частью вызова, но как b7 Fe и далее и далее переведены на 80482f0?