The Intel manual says that:
- the
syscall
instruction is invalid for compatibility mode (32-bit) popa
is invalid for 64-bit mode
So is there a reason why NASM:
- gives a compilation error
instruction not supported in 64-bit mode
if I usepopa
with-f elf64
- does not give give a compilation error if I use
syscall
with-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).