Microsoft Windows中的CPU设备驱动程序

时间:2013-12-30 21:46:52

标签: c assembly driver cpu bootable

如果我们考虑语言C.它直接编译处理器指令中的代码。因此,程序执行的处理器无关紧要。但是如果我们考虑汇编语言,它就是特定于正在执行的处理器。所以,根据这个,如果我们用C编写一个程序,&使它成为可启动的。应该没有使用处理器的问题,&该程序应该立即运行,它也运行没有任何问题。那么为什么会这样,Microsoft Windows要求驱动程序使用CPU(您可以检查它的设备管理器,其中安装了正在使用的CPU的驱动程序)。如果是一个简单的可引导程序,可以编写,编译,和执行,无需驱动程序。那为什么在Windows中安装了CPU驱动程序?

3 个答案:

答案 0 :(得分:4)

您可以这样做,但前提是您的程序不执行任何I / O操作,即不写入屏幕,不访问磁盘等。

制作一个实际上需要执行某些I / O的C程序(至少将“Hello world”发送到屏幕,LED矩阵或串行端口)。 I / O管理既可以包含在您的程序中,也可以包含在嵌入式设备中,也可以由程序加载和调用的共享库形式提供,由操作系统管理。

那就是说,你可以在许多环境中制作,编译和运行一个简单的程序作为启动程序,只要它需要的所有I / O例程都包含在可执行文件中,并且有一个工具链需要您的C程序,并为您提供所需平台的可执行启动映像。

另一方面,Windows没有设备驱动程序才能使用CPU。您通过名称“CPU”看到的设备驱动程序用于管理IO APIC等内容,以便路由中断;本地APIC,支持多核处理,虚拟化,NX位等多种功能。您会看到...... CPU内部有一些I / O设备,因此该设备驱动程序用于管理它们。

答案 1 :(得分:1)

代码执行不需要CPU的驱动程序,它只是Cpu作为设备的地方的一种占位符。例如,支持电源管理或读取核心温度。操作系统需要与之通信的设备。驱动程序为此保留资源,并为更高级别提供相应的接口。

由于历史原因,您需要为汇编程序指定Cpu类型。对于C编译器,这是由您运行它的平台隐式给出的。您通常需要为不同的Cpu familly使用不同的编译器。

答案 2 :(得分:0)

如果我正确地阅读了你的问题,你就会误解C语言的编译过程及其目的。

C compilesassembly language然后转换为机器指令。在了解编译的C程序实际上是处理器特定的(参考处理器类型,例如x86或ARM)之前,您需要阅读有关ISAassembly language的更多信息。

如果您为ARM处理器编译了C程序,它将无法在x86处理器上运行。这与该特定处理器的ISA有关。虚拟机(例如Java)和解释器(例如Python)之类的东西是提高代码可移植性的常用方法。