程序计数器更改

时间:2012-05-14 14:46:30

标签: architecture language-agnostic hardware program-counter

在PC(程序计数器)寄存器发生变化的所有可能性中,我发现了这些:

1) PC increases its value with loading new instruction
2) with jumps and branches
3) with calling subroutine
4) with return from subroutine

那些是全部还是我遗失了什么?

我来自this article

2 个答案:

答案 0 :(得分:5)

还有一些:

  • 硬件中断改变PC以执行中断服务程序,然后返回到被中断的程序。
  • 特殊情况(除以0或页面错误等异常情况)以类似方式更改PC。
  • 调试中断也是这样做的。
  • 系统调用(调用和返回)也会改变PC。

答案 1 :(得分:0)

我相信这就是全部,假设非局部跳跃作为2的一部分包含在内(例如setjmp,longjmp)。