内存地址寄存器(MAR)和程序计数器(PC)有何不同?
8 回答
不同之处在于程序计数器指向要获取/执行的下一条指令,而内存地址寄存器指向正在运行的程序将获取一些数据(不是指令)的内存位置。
PC:程序计数器(PC)保存下一条要执行或解码的指令的地址。
IR:指令寄存器(IR)保存当前正在执行或解码的指令。
MAR:内存地址寄存器(MAR)保存内存中位置的地址,其中包含当前正在执行的指令所需的数据。只需 MAR 指向包含所需数据的内存位置。
程序计数器 (PC) 存储当前指令执行后要从内存中取出的下一条指令的地址。
这个来自 PC 的地址被加载到地址寄存器 (AR) 中: AR<--PC
来自地址寄存器 (AR) 给出的内存位置的指令被加载到指令寄存器 (IR) 中:IR<--M[AR]
程序计数器递增到下一条指令的地址:PC<--PC+1
内存地址寄存器 (MAR) 保存将从中获取数据以带入 CPU 的寄存器组件的地址位置。
程序计数器 (PC) 保存 NEXT 指令的位置(存储在内存中的所有内容都有一个地址)。希望这有帮助
程序计数器 (PC) 是 CPU 正在执行的当前指令的地址。存储器地址寄存器 (MAR) 可以包含被加载或存储指令访问的数据的地址。
程序计数器使用逻辑地址(程序生成的虚拟地址),而地址寄存器使用物理地址(实际的真实内存地址)。这是主要区别。
程序计数器 程序计数器保存下一条要被提取-解码-执行的指令的地址。这将在当前指令被解码时自动增加
内存地址寄存器 (MAR) 保存正在执行的当前指令的地址。它指向所需指令所在的内存中的相关位置(在此阶段,地址只是从程序计数器中复制)。
我在一本书中读到它
PC 只保存指令的地址
PC 在将指令地址传递给 MAR 后立即添加一个数字
MAR 在寻址周期中保存指令的地址
在后续提取周期中保存数据的地址
这些是差异的一部分(可能还有其他差异)