如何在linux x86_64上模拟一个iret

如何在linux x86_64上模拟一个iret,第1张

概述如何在linux x86_64上模拟一个iret

我正在写一个基于Intel VT的deBUGging器。

由于在NMI-Exiting = 1时,virex指令在vmx-guest中的性能发生了改变。 所以我应该自己处理vmx-host中的NMI,否则guest将会有nmi可重入的BUG。

我查了英特尔手册:

当NMI中断处理程序正在执行时,处理器会禁用对NMI处理程序的额外调用,直到执行下一个IRET指令为止。 这种对后续NMI的阻塞防止了对NMI处理程序的调用。

我如何使用中断触发x86程序集中的除零错误exception?

为什么linux不遵循Unix系统调用约定?

用x86 32位linux打印一个整数sys_write(NASM)

x64组装优化

实现x86到x64汇编代码开关

所以我试图在vmx-host里模拟一个iret。 CPL保持ring0并保持堆栈和代码段不变。

我在下面写了一个示例代码,它是在NMI引起的vmx-exit之后:

asm volatile( "pushfq nt" "mov %%cs.%%ax nt" "push %%raxnt" "mov $._restart_code,%%rax nt" "push %%rax nt" "iret nt"/*manully iret in the host before vmx-entry.*/ "._restart_code:" "nop":);

任何人都可以展示一些指南

如何在Ubuntu linux中执行CMU二进制炸d?

为什么nasm说我在g ++创build的程序集中有错误?

PE文件中没有.BSS

为什么OSX得到一个amd64间接跳转的总线错误?

在linux上以64位进程运行32位代码 – 内存访问

总结

以上是内存溢出为你收集整理的如何在linux x86_64上模拟一个iret全部内容,希望文章能够帮你解决如何在linux x86_64上模拟一个iret所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1294269.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存