The Intel manual says that:
- the
syscallinstruction is invalid for compatibility mode (32-bit) popais invalid for 64-bit mode
So is there a reason why NASM:
- gives a compilation error
instruction not supported in 64-bit modeif I usepopawith-f elf64 - does not give give a compilation error if I use
syscallwith-f elf32. If I run the executable I getIllegal instruction (core dumped)as expected.
Why treat those two cases differently?
Tested with NASM version 2.10.09 on Ubuntu 14.04 (should be OS agnostic).