亚当斯/阿格森论文第3.2节末尾显示的isPrime的翻译版本不以ret指令结尾;相反,它以jmp到%gs结束.isPrime启动时堆栈上有什么返回指令指针,为什么翻译后的isPrime不能直接返回到该地址?
答: 因为BT会修改代码块的长度,而且是按执行流逐块翻译的.因此如果跳转到ret后压入的指令,大概率会跳转到错误地址.必须跳转到VMM翻译后,缓存的地址.