X86 获取完成后,PC寄存器指向什么?

X86 获取完成后,PC寄存器指向什么?,x86,mips,cpu-architecture,program-counter,X86,Mips,Cpu Architecture,Program Counter,获取完成后,PC寄存器指向什么 是要执行的下一条指令的地址,还是其他什么?在x86中,IP寄存器(英特尔的PC名称)没有明确定义的值,除了 当它通过调用、中断或故障写入堆栈时,在这种情况下,它具有完成执行的最后一条指令之后的指令地址 当它用于IP相对寻址时,在这种情况下,它的指令地址位于包含IP相对地址的指令之后 我在这里不讨论的其他情况,例如任务切换 由于采用了流水线,在任何情况下都与最后一条获取的指令无关。事实上,可以同时执行多个具有IP相对地址的指令,并且每个指令在其地址计算中使用不同

获取完成后,PC寄存器指向什么

是要执行的下一条指令的地址,还是其他什么?

在x86中,IP寄存器(英特尔的PC名称)没有明确定义的值,除了

  • 当它通过调用、中断或故障写入堆栈时,在这种情况下,它具有完成执行的最后一条指令之后的指令地址
  • 当它用于IP相对寻址时,在这种情况下,它的指令地址位于包含IP相对地址的指令之后
  • 我在这里不讨论的其他情况,例如任务切换
由于采用了流水线,在任何情况下都与最后一条获取的指令无关。事实上,可以同时执行多个具有IP相对地址的指令,并且每个指令在其地址计算中使用不同的IP值

(我认为MIPS也是如此,但我不能说。)

在x86中,IP寄存器(英特尔电脑的名称)没有明确定义的值,除了

  • 当它通过调用、中断或故障写入堆栈时,在这种情况下,它具有完成执行的最后一条指令之后的指令地址
  • 当它用于IP相对寻址时,在这种情况下,它的指令地址位于包含IP相对地址的指令之后
  • 我在这里不讨论的其他情况,例如任务切换
由于采用了流水线,在任何情况下都与最后一条获取的指令无关。事实上,可以同时执行多个具有IP相对地址的指令,并且每个指令在其地址计算中使用不同的IP值


(我认为MIPS也是如此,但我不能说。)

它是否因架构而异?顺便说一句,请问是哪种体系结构?@donPablo,mips和x86。我的AMD x86手册sez:指向当前代码段内下一条指令的偏移量。。。这个寄存器的内容从一个指令边界前进到下一个指令边界。你能把它重新表述为一个计算机编程问题吗?您正在执行的指令取决于获取后PC的值?请注意,由于流水线和超标量执行,程序可见的值通常与处理器内部发生的不匹配。@RaymondChen:在指令执行期间,PC/IP的体系结构值通常反映了该体系结构的第一代实现的微体系结构。e、 g.ARM32前面有PC=2条指令。典型的5级MIPS在IF之后立即解析ID级中的分支,因此相对分支和段绝对
j
ump计算与分支延迟槽中指令的地址相关。8086可能已经提前预取了多条指令,但可能在增量解码结束时,它有一个指针指向当前指令结束后的一条指令=PC。它是否因体系结构而异?顺便说一句,请问是哪种体系结构?@donPablo,mips和x86。我的AMD x86手册sez:指向当前代码段内下一条指令的偏移量。。。这个寄存器的内容从一个指令边界前进到下一个指令边界。你能把它重新表述为一个计算机编程问题吗?您正在执行的指令取决于获取后PC的值?请注意,由于流水线和超标量执行,程序可见的值通常与处理器内部发生的不匹配。@RaymondChen:在指令执行期间,PC/IP的体系结构值通常反映了该体系结构的第一代实现的微体系结构。e、 g.ARM32前面有PC=2条指令。典型的5级MIPS在IF之后立即解析ID级中的分支,因此相对分支和段绝对
j
ump计算与分支延迟槽中指令的地址相关。8086可能已经提前预取了多条指令,但可能在增量解码结束时,它有一个指针指向当前指令结束后的一条指令=PC。是的,MIPS相对分支(
b*
)和段绝对跳转(
j
/
jal
)目标地址计算与分支延迟槽中指令的地址有关。(分支/跳转后的下一条指令)。另外,现代MIPS64r6 pc相对加载和添加pc到寄存器也使用下一条指令的地址。是的,MIPS相对分支(
b*
)和段绝对跳转(
j
/
jal
)目标地址计算与分支延迟槽中指令的地址相关。(分支/跳转后的下一条指令)。另外,现代MIPS64r6 pc相对加载和添加pc寄存器也使用下一条指令的地址。