gpt4 book ai didi

assembly - Mips 引用表上的 "PC"

转载 作者:行者123 更新时间:2023-12-02 03:08:47 25 4
gpt4 key购买 nike

我正在根据 Mips 引用表练习将 Mips 指令 (beq $t5, $s0, loop) 转换为二进制,并且有一系列指令 (PC=PC + 4 + 分支地址) 用于计算立即数“I”类型指令的值,它一直引用“PC”。

PC指的是什么?看来我应该寻找“循环”标签在内存中的存储位置-:专门查找该内存地址。

最佳答案

英特尔架构称其为指令指针,而不是程序计数器。这两个名称都指的是同一个东西:一个寄存器,用于标识处理器要执行的当前/下一条指令的地址。

在时钟周期开始时过度简化一点(即假设 s 非流水线处理器),PC 保存将在时钟周期内执行的指令的地址,也就是当前指令。在时钟周期结束时,更新 PC 寄存器以保存将在下一个时钟周期执行的指令的地址。

PC = PC + 4 描述了顺序执行,例如,addaddi 和未采用的条件分支:它表示下一个 PC 将引用超出当前指令 4 个字节的指令 — 对于(正常)顺序流,PC 一次向前移动 4 个字节。

表达式 PC = PC + 4 + branch address 有点用词不当——它应该说 PC = PC + 4 + offset 其中 offset 是立即数I 型指令,更具体地说是有符号(符号从 16 位扩展到 32 位)立即数 * 4。

在这个公式中,=右边的PC指的是当前指令:beq指令的地址,而左侧的 PC 指的是 下一个beq 之后执行的 PC。这个公式描述了当分支发生时接下来要执行的指令地址,因为这是一个条件分支(如果分支没有发生,那么 PC = PC + 4 描述顺序执行)。

对于条件分支,-1 的立即数值将分支到自身,0 将分支到下一条指令,1 将跳过前面的一条指令。

关于assembly - Mips 引用表上的 "PC",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58256288/

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