我正在使用 HCS08 CPU(用于飞思卡尔 MCU),但我无法理解分支指令。这是手册。此架构中的程序计数器指向要获取的下一条指令。BSR 指令(第 237 页)将以下列方式更新程序计数器寄存器(在将其保存到堆栈并进行分支之前):
PC ← (PC) + $0002 提前 PC 到返回地址
他们说“程序计数器从操作码地址增加 2(因此它指向下一条指令的操作码,这将是返回地址)”。但为什么是 2 而不仅仅是 1?假设我有
- 第 1 行指令1
- 2号线BSR
- 第 3 行指令2
- 第 4 行指令3
CPU取“instruction1”时并不知道下一行会有分支,所以在“instruction1”取到后,程序计数器指向第2行。当CPU取到BSR时,它不会递增程序计数器;它将程序计数器的实际值加 2 保存在堆栈中,该值将由分支结束时的返回指令使用。但是 Program Counter + 2 指向第 4 行,而不是第 3 行!!!这不是错误吗?感谢您阅读!
鲍勃