解释EAX为零时的非法指令


xor eax,eax
mov [eax], edx

这被称为非法。我可以得到一个解释吗?

这本身并不违法。 它不能导致#UD未定义的指令异常。 这就是汇编语言/机器代码术语中"非法指令"的含义。

在普通操作系统下的普通 32 位程序中运行它将导致无效的#PF异常(因为不会映射零页(。 像Linux这样的操作系统将为进程提供SIGSEGV,而不是SIGILL。

正如@Jester所说,在Linux下,你可以改变vm.mmap_min_addrsysctl(https://wiki.debian.org/mmap_min_addr(,就像WINE需要运行16位Windows程序一样,然后就可以mmap该页面并运行这些指令而不会出错。

相关内容

  • 没有找到相关文章