2

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

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

我知道诸如多个 cpu 内核和多线程之类的事情使这种编程对于最常见的情况变得毫无意义。但是,我很想知道这是否可能,如果可以,你怎么做?

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

非常感谢您提前付出的努力和最好的问候,B.

4

1 回答 1

2

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

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

于 2016-03-17T15:10:41.347 回答