x86指令是否需要自己的编码以及所有参数同时出现在内存中?
我试图弄清楚是否有可能运行仅由单个物理页面支持其RAM的Linux VM。 为了模拟这一点,我修改了KVM中的嵌套页面错误处理程序,以从所有嵌套页面表(NPT)条目中删除当前位,但与当前正在处理的页面错误相对应的位除外。 在尝试启动Linux guest虚拟机时,我观察到使用内存操作数的汇编指令,例如 add [rbp+0x820DDA], ebp 导致页面错误循环,直到我恢复包含指令的页面以及操作数中引用的页面的当前位(在本示例中[rbp+0x820DDA])。 我想知道为什么会这样。CPU是否不应该按顺序访问内存页面,即先读取指令然后访问内存操作数?还是x86要求同时访问指令页面以及所有操作数页面? 我正在AMD Zen 1上进行测试。