gpt4 book ai didi

c - 机器代码指令如何传输到 CPU?

转载 作者:行者123 更新时间:2023-12-02 08:33:38 24 4
gpt4 key购买 nike

我目前正在调查不同编程语言的运行时在幕后是什么样子的。对于C这样的编译型语言,人们通常给出的解释是“Code is compiled to assembly which is assembled and linked into a binary executable. The executable are then loaded into memory and the CPU interpret it.”我的问题是 CPU 如何知道去哪里寻找下一条要执行的指令?它是存储在其中一个寄存器中的内存地址吗?

最佳答案

CPU 不“解释”机器代码 - 它直接执行它 - 这就是它被称为机器代码的原因。

处理器通常有一个称为程序计数器 (PC) 的寄存器,它在复位时从通常称为复位 vector 的位置开始,该位置要么固定用于处理器,或从固定位置加载,并在执行每个非分支顺序指令后递增到下一条指令。分支和直接跳转指令可能导致 PC 被设置为不同于下一条指令顺序地址的地址。

您可以通过在调试器中在汇编程序级别单步执行代码来观察此行为(调试器应该能够查看 CPU 寄存器)。请注意,汇编程序 是机器代码的人类可读(或多或少)表示,调试器显示实际机器代码的反汇编,而不是编译器生成的汇编程序 - 在调试器中一个汇编程序指令==一条机器指令。大多数汇编器支持的宏和指令可能并不总是具有相同的一对一关系,因此即使对于最初是汇编器代码的代码,反汇编也可能并不总是与源代码相同。

详细描述了该过程(称为指令周期获取/执行周期 here

关于c - 机器代码指令如何传输到 CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24064004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com