Когда вы смотрите на исполняемый файл elf, созданный gcc в системе Linux / i386, кажется, что он всегда помещает инструкцию остановки (0xf4) после вызова «main» и перед заполнением «nop», например так:
│ ....... ! entrypoint:
│ ....... ! xor ebp, ebp
│ 80482e2 ! pop esi
│ 80482e3 ! mov ecx, esp*emphasized text*
│ 80482e5 ! and esp, 0fffffff0h
│ 80482e8 ! push eax
│ 80482e9 ! push esp
│ 80482ea ! push edx
│ 80482eb ! push __libc_csu_fini
│ 80482f0 ! push __libc_csu_init
│ 80482f5 ! push ecx
│ 80482f6 ! push esi
│ 80482f7 ! push main
│ 80482fc ! call wrapper_804a004_80482c4
│ 8048301 ! hlt <--- halt instruction
│ 8048302 ! nop
│ 8048303 ! nop
│ 8048304 ! nop
⋮
Какова цель этого?
Этот код никогда не должен быть достигнут. Это какая-то защита?