【发布时间】:2018-05-17 18:31:36
【问题描述】:
如果我有一个 CPU 并且我编写了一个程序并且我想存储一个值(将一个值从寄存器复制到内存 (RAM)),那么我会在 CPU 的指令集中使用一个指令(假设这是x86 CPU) 这样做?
第二个问题,x86 指令集中的指令是在 RAM 中名为MOV 的特定地址设置值吗?
第三个问题。 BIOS、UEFI、内核和引导加载程序都使用 x86 指令集中的 MOV 指令来执行此操作(将值(如 10)分配给 RAM 中的特定地址)对吗?
第四个问题。在操作系统(带有内核(如Linux))环境中运行的程序在请求时不使用MOV 指令来分配一块内存,而是要求内核代表它们来分配?
第五题。我在第四个问题中描述的是否称为系统调用(当操作系统环境中运行的程序要求内核代表它做某事(在这种情况下给它一些内存))?
【问题讨论】:
-
1.是的。 2.是的,最常见的x86存储指令是
mov。例如mov dword [rdi], 10。 3. 这很奇怪。您可能会编写一个没有任何静态数据的引导加载程序,因此您的所有 mov-immediate 指令都将使用寄存器目标。 -
对于第三个问题,我将通过询问来重新表述它。该问题中提到的所有程序(BIOS、UEFI、内核和引导加载程序)是否都使用 CPU 指令集中的指令将值存储在内存 (RAM) 中?
-
是的,任何需要比寄存器更多空间的重要程序,或者需要调用函数或系统调用来返回内存中的值,都必须使用内存。引导加载程序必须做的部分工作就是从磁盘加载到内存中,因此虽然它本身可能不使用任何存储指令,但它调用的 BIOS 或 UEFI 函数会代表它这样做。
标签: x86 computer-science cpu-architecture