我的代码中有这个片段
void jmp_esp()
{
__asm__("jmp *%esp");
}
使用 gcc 编译时
gcc aslr.c -o aslr -ggdb -fno-stack-protector -z execstack
我得到这个错误。
aslr.c: Assembler messages:
aslr.c:6: Error: operand type mismatch for `jmp'
尽管汇编指令有效,为什么这一行无法编译?
我读过 DEP(数据执行保护)。会不会是这个功能造成了这个编译错误?如果是这样,如何禁用它?