百科问答小站 logo
百科问答小站 font logo



程序计数器(Program Counter)是一个实际存在的寄存器吗? 第1页

  

user avatar   pansz 网友的相关建议: 
      

它可能在某个CPU体系中真实存在,只是不存在于x86的CPU而已。考过高级程序员的应该记得当时有个casl汇编所面对的CPU体系就确实有个真实的寄存器叫pc,那么它的原型CPU很有可能就是一款有PC寄存器的CPU,而且这款CPU的指令集恰恰是定长的。

至于指针+1在C语言里面的定义也很明确,是加一个单位长度。如果字长为4字节,自然它的概念是加4。所以这样的名称也没明显问题,至少在PC寄存器的那个目标CPU架构中没问题。

可以这样考虑问题:x86并不是世界上唯一存在的体系架构,每个体系架构中的CPU指令以及寄存器名称都不同。所以遇到一个在自己所知体系中不存在的寄存器也就没什么奇怪了。


user avatar   be5invis 网友的相关建议: 
      
在很多微机原理和计算机组成原理书中说每当完成取指令操作后,PC = PC + 1,感觉这个说法不太正确,我的理解是 PC=PC + “取出的指令长度”,比如上一条指令长度为 4 字节,PC=PC+4,这个理解正确吗?又或者比如 MIPS 指令集的每条指令长均为 4 字节,所以指令地址一定为4的倍数,所以指令地址后两位一定为 0,所以这里的 +1 指代的就是 +4 字节呢?

+1 是指增加一个——概念中的单位。为了方便教学往往说 +1,实际上是增加(一条指令的长度 ÷ 寻址粒度),在 MIPS 中就是 4,因为 MIPS 一条指令长度 4 字节,寻址粒度是 1 字节。而 x86 体系的指令长度不定,所以每次增加的量会变化。

还有一个问题就是因为虽说经常听到 PC 这个词,但是我却没有见到其实体,所以我的理解是 PC 实际上就是 CS:IP 组合的逻辑表示。PC 不是一个实体,真正用来表示 PC 值的是 CS:IP,所谓的 PC 自动增加是指令指针寄存器 IP 在自增?这个理解对吗?

在 x86 体系里是这样。x86 系统中自增的是 IP,用 CS:IP 组合表示正在执行的指令地址,此时 PC 只是一个概念上的说法。在 ARM 体系中 R15 就是 PC,当然 ARM 和 IA-32、x64 都支持高级内存管理,所以「PC」的内容未必是当前指令在内存中的绝对位置。


user avatar   feng-dong 网友的相关建议: 
      

被各种朋友嘲笑订阅太低,比如跳舞:哥均订比你高订高,比如香蕉:我有四五万均订,七万高订,比如某表姐:日订阅破十一万人民币,比如三少:我每个月订阅都有好几十万呢,都是零花钱,比如奥斯卡:断更涨订阅,真的涨订阅……

感觉特别屈辱。

最屈辱的是经常有些新人跑过来,兴高采烈的说:蛤蟆哥哥,我均订破万了。你嫉妒的恨不得掐死他……




  

相关话题

  UEFI 引导与 BIOS 引导在原理上有什么区别? 
  学计算机的的去玩音乐了是一种什么体验? 
  Linux 内核的 C 代码风格是怎样的? 
  计算机标准时间中“上午11:59”和“上午12:01”之间隔了多长时间?是否有bug? 
  如何评价「线程的本质就是一个正在运行的函数」? 
  如果一个行业大佬向你说了一件幼稚的事情,你会觉得这话是另有玄机,还是大佬自己就没整明白呢? 
  鸿蒙之于AOSP,是否Linux之于wine,Windows之于WSL?这么多人质疑鸿蒙说明了什么? 
  为什么 Windows 的 Linux 子系统的文件同步和 Windows 不是实时的? 
  为什么计算机科学中的神经网络模型得出来的结果被认为是科学的,而中医诊断却不被认为是科学的? 
  请问怎么深入掌握c语言? 

前一个讨论
为什么高手都是把枪放在腰间点射,而不是使用准星
下一个讨论
Epic 停止在俄罗斯销售游戏,这会造成哪些影响?





© 2025-04-16 - tinynew.org. All Rights Reserved.
© 2025-04-16 - tinynew.org. 保留所有权利