arm PC寄存器的问题~~~
我的理解是:arm在运行程序的时候,一般情况,每一个机器周期,pc的值都+4(32位的指令)。因为arm的流水构架(取指, 译码, 执行),所以PC寄存器的值为当前执行指令的地址+8(2个指令字节大小), 也就是正在取指的地址。
不知道有没有错
我想问的是:
1.PC自动加4的是在哪个逻辑电路单元完成(取指, 译码, 执行)中的那一个?
2.书上说流水构架,所以3个逻辑单元是并行的,这样可以提高效率。但是PC总是等于当前执行的指令地址+8,那么是不是可以理解为PC+4的这个操作是在执行逻辑单元完成以后才实现,那么这个pc自加4的逻辑电路和3级流水是串行咯?
3.当跳转指令或异常跳转时,实际上改变PC的值,但是指令执行完后,PC不会自加4(不然的话就会在跳转处的下一个指令处开始取指),是不是可以认为这时,会暂时禁用pc自加4的逻辑电路。
不太明白,
求大牛们指教~~