是"汇编语言"有没有OS?

时间:2014-09-09 17:13:12

标签: assembly operating-system bootloader

我正在读一本关于x86 / x86-64汇编编程的书。 在那本书中,几乎所有的实验都是由#34;装载机加载的。 这让我很困惑,因为我之前从未使用过这种汇编代码。

我想知道从-S--emit-asm编译器选项生成的程序集是否在&#34;虚拟环境&#34;中运行,其中硬件是由操作系统提取的?< / p>

当我在编译器输出的asm文件中看到eaxxmm0esp时, 它们是指我CPU中的真实寄存器吗?或者只是一个概念性对象,它将在运行时由OS解释?

2 个答案:

答案 0 :(得分:0)

  

我想知道从-S或--emit-asm编译器选项生成的程序集是否在“虚拟环境”中运行,其中硬件是由OS抽象的?

在大多数情况下,它是相同的物理硬件。如果您在虚拟机环境(VMWare,HyperV)中运行,那么它自然会被抽象化。

在某些情况下,操作系统确实抽象了硬件。有时会模拟过时和不受支持的说明。操作系统有时允许通过模拟INP / OUTP命令与某些硬件外围设备进行交互 - 这些命令通常禁止用于非内核代码。

某些命令在操作系统下不能像在裸机上那样工作 - 例如,堆栈增长是通过保护页实现的,其中超出允许区域的内存访问会导致操作系统控制并增加堆栈。

当涉及到香草命令(例如mov eax, esp)时,它会在物理硬件上执行。

答案 1 :(得分:-1)

这些是真正的寄存器,汇编语言随计算机体系结构而变化,如寄存器

相关问题