当我们运行一个可执行文件时,机器代码在CPU中被逐一调用,但是操作系统如何将每条指令提供给CPU呢?
内部情况如何?
答案1
答案2
操作系统将 CPU 的指令指针 (IP) 寄存器设置为要执行的代码的开头(位于 RAM 中)。CPU 开始按顺序执行指令。
答案3
操作系统不会向 CPU 提供指令,CPU 会根据 PC(程序计数器)或 IP(指令指针)或任何其他您想要使用的术语自行从内存中提取指令。操作系统本身只是输入到处理器的一堆指令。处理器无法从任何其他程序中了解操作系统。操作系统读取可执行文件的机器代码部分(Windows 和 Linux 等知名操作系统使用的可执行文件在文件中包含更多信息,而不仅仅是二进制或可执行文件部分)并将其放在 RAM 的某个位置。本质上,操作系统通过更改 PC 分支到可执行文件中的入口点指令。有很多不同的方法可以做到这一点,分支、更改中断的返回值、特定于处理器的方法等。
Petzold有一本书叫《代码》,很不错,可以看看。
答案4
操作系统将处理器的指令指针设置为程序指令所在的内存地址,处理器从那里开始工作。我可以获得更多技术信息,但我不知道你想要多少信息。