我有一个奇怪的问题,但我对这个话题很感兴趣。
是否有可能直接访问当前基于x64的计算机的硬件,而无需使用某种HAL(硬件抽象层)或其他操作系统的悬架(udev,upower,...)?我不是在讨论开发某个设备驱动程序,而是我正在谈论一个简单的“Hello World”编程与C或汇编程序或类似的东西。
我知道像多个cpu核心和多线程等等这样的事实使得这种编程对于最常见的情况来说是某种无意义的。但是,我有兴趣知道它是否可能,如果是的话,你怎么能这样做?
我的重点是基于Linux的操作系统。据我所知,自98 / ME以来,基于Microsoft的操作系统无法实现这一目标
非常感谢你提前付出的努力。最好的祝福, 乙
答案 0 :(得分:2)
不,你不能用任何语言这样做。原因很简单 - 在任何现代架构中,用户程序都在所谓的保护模式下运行。这意味着(除其他事项外)是你无法访问真实内存 - 相反,CPU与操作系统一起将你的程序正在使用的内存地址翻译成其他东西。
为了与硬件进行通信,您确实需要访问此硬件使用的内存区域 - 这在保护模式下完全不可能。