2

我正在尝试做一些模拟。在实际情况下,x86-based工业 PC 使用 PC/104 与网络板连接。网卡被视为 I/O 设备。运行的代码IPC使用 IN、OUT 等汇编指令来访问 I/O 端口。我想在我的笔记本电脑上模拟整个事情。

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

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

4

1 回答 1

1

如果您的带有 IN/OUT 指令的代码位于用户程序中,您需要了解如何在同一个程序(可能通过信号?)或内核中拦截和处理这些指令。IN 和 OUT 是特权指令,默认情况下它们会在用户模式代码中引发异常 (#GP),然后内核会处理此异常。对于这种情况,您需要有自己的处理程序。在 Windows 中,这可以使用所谓的结构化异常处理 (AKA SEH) 来完成。

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

难道你不能用对设备仿真代码的调用来替换执行 IN 和 OUT 的例程吗?无论如何,您都在模仿它,没有人关心它是输入/输出还是其他东西。

看看如何使用 SEH 来完成

于 2012-10-11T08:42:39.950 回答