我正试着做些模拟。在实际情况下,x86-based工业PC机使用PC/104与网络板连接。网络板被视为I/O设备。运行在IPC上的代码使用诸如IN、OUT之类的程序集指令来访问I/O端口。我想在我的笔记本电脑上模拟整个过程。
运行在c++上的IPC程序可以移植到我的笔记本上,因为它们都是基于x86架构的。但是对于输入/输出指令,我遇到了麻烦,因为没有真正的网络板连接到我的笔记本电脑。利用SystemC对网络板的逻辑进行了模拟。我想知道是否有一种方法可以拦截对实际硬件的I/O端口访问(IN/OUT),并让虚拟化硬件的逻辑接管.
我感谢你的任何帮助或建议。
发布于 2012-10-11 08:42:39
如果您的代码与输入/输出指令在一个用户程序中,您需要了解如何在同一程序中拦截和处理这些指令(也许,通过信号?)或者在内核里。输入和输出是特权指令,默认情况下,它们会导致用户模式代码中的异常(#GP),然后由内核处理这个异常。你需要有自己的处理程序来处理这个案子。在Windows中,这可以使用所谓的结构化异常处理(AKA )来完成。
如果代码已经在内核中了,这是很棘手的,因为在内核中的IN/OUT不会导致#GP。
你就不能用其他的东西来替换那些做进出的例程,用对设备仿真代码的调用来代替吗?不管怎么说,你在模仿它,没人在乎它是进/出还是别的什么东西。
https://stackoverflow.com/questions/12832392
复制相似问题