如何在没有硬件抽象层的情况下直接访问 x64 硬件

How to access x64 hardware directly without Hardware Abstraction Layers?

本文关键字:硬件 情况下 x64 访问 抽象      更新时间:2023-10-16

我有一个奇怪的问题,但我对这个话题很感兴趣。

是否有可能直接访问当前基于 x64 的计算机的硬件,而无需使用某种 HAL(硬件抽象层)或其他操作系统的吊坠(udev、upower 等)?我不是在谈论开发某个设备驱动程序,而是在谈论使用 C 或汇编程序或类似的东西进行简单的"Hello World"编程。

我知道这样一个事实,即诸如多个CPU内核和多线程之类的东西使得这种编程在最常见的情况下毫无意义。但是,我有兴趣知道这是否可能,如果是,您如何做到这一点?

我的重点是基于Linux的操作系统。据我所知,自 98/ME 以来,在基于 Microsoft 的操作系统上是不可能的

非常感谢您提前付出的努力和最诚挚的问候,二.

不,您将无法用任何语言执行此操作。原因很简单 - 在任何现代架构中,用户程序都以所谓的保护模式运行。这意味着(除其他外)您无法访问真实内存 - 相反,CPU 与操作系统一起将程序正在使用的内存地址转换为其他内容。

为了与硬件通信,您确实需要访问该硬件使用的内存区域 - 这在保护模式下是完全不可能的。