首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何拦截I/O端口访问以实现硬件虚拟化

如何拦截I/O端口访问以实现硬件虚拟化
EN

Stack Overflow用户
提问于 2012-10-11 04:49:33
回答 1查看 765关注 0票数 2

我正试着做些模拟。在实际情况下,x86-based工业PC机使用PC/104与网络板连接。网络板被视为I/O设备。运行在IPC上的代码使用诸如IN、OUT之类的程序集指令来访问I/O端口。我想在我的笔记本电脑上模拟整个过程。

运行在c++上的IPC程序可以移植到我的笔记本上,因为它们都是基于x86架构的。但是对于输入/输出指令,我遇到了麻烦,因为没有真正的网络板连接到我的笔记本电脑。利用SystemC对网络板的逻辑进行了模拟。我想知道是否有一种方法可以拦截对实际硬件的I/O端口访问(IN/OUT),并让虚拟化硬件的逻辑接管.

我感谢你的任何帮助或建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-11 08:42:39

如果您的代码与输入/输出指令在一个用户程序中,您需要了解如何在同一程序中拦截和处理这些指令(也许,通过信号?)或者在内核里。输入和输出是特权指令,默认情况下,它们会导致用户模式代码中的异常(#GP),然后由内核处理这个异常。你需要有自己的处理程序来处理这个案子。在Windows中,这可以使用所谓的结构化异常处理(AKA )来完成。

如果代码已经在内核中了,这是很棘手的,因为在内核中的IN/OUT不会导致#GP。

你就不能用其他的东西来替换那些做进出的例程,用对设备仿真代码的调用来代替吗?不管怎么说,你在模仿它,没人在乎它是进/出还是别的什么东西。

how this can be done with SEH

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12832392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档