We know that the Program Counter contains the address of the next instruction to be executed. I am trying to understand which address this is - logical (CPU) or physical (RAM).
2 回答
3
该地址是虚拟的,即它包含 CPU 在那一刻看到的地址。在大多数包含 MMU 的 PC 和架构中都是如此。在微控制器(例如:Arduino CPU、STM32 等)中,程序计数器将始终包含物理地址。
于 2021-06-04T19:59:22.757 回答
2
在我所知道的所有架构中,它都是一个逻辑(虚拟)地址。这确实是唯一有用的方法。您希望页面翻译像数据访问一样应用于指令提取,以便分页的所有功能都可以用于代码和数据。对于可以进行 PC 相关数据寻址的体系结构,您也需要虚拟地址 - 因为所有数据指令都需要进行页面转换,所以您实际上无法对物理地址做任何有用的事情。
(只是为了承认 dirac3000 的观点——如果机器没有 MMU 或者它被禁用,比如实模式下的 x86,那么所有地址都是物理的,并且“逻辑”和“物理”之间的区别不存在,所以问题变得毫无意义。)
于 2021-06-04T05:20:18.753 回答