xor eax,eax
mov [eax], edx
这被称为非法。我可以得到一个解释吗?
这本身并不违法。 它不能导致#UD
未定义的指令异常。 这就是汇编语言/机器代码术语中"非法指令"的含义。
在普通操作系统下的普通 32 位程序中运行它将导致无效的#PF
异常(因为不会映射零页(。 像Linux这样的操作系统将为进程提供SIGSEGV,而不是SIGILL。
正如@Jester所说,在Linux下,你可以改变vm.mmap_min_addr
sysctl(https://wiki.debian.org/mmap_min_addr(,就像WINE需要运行16位Windows程序一样,然后就可以mmap
该页面并运行这些指令而不会出错。