13,329
次編輯
變更
程序计数器
,创建页面,内容为“{| class="https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E7%A8%8B%E5%BA%8F%E8%AE%A1%E6%95%B0%E5%99%A8&step_word=&hs=0&pn=182&spn=0&di=71468572000…”
{| class="https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E7%A8%8B%E5%BA%8F%E8%AE%A1%E6%95%B0%E5%99%A8&step_word=&hs=0&pn=182&spn=0&di=7146857200093233153&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&cs=3623163704%2C3296596020&os=129404534%2C3852746032&simid=4215852957%2C776369923&adpicid=0&lpn=0&ln=1628&fr=&fmq=1667695186079_R&fm=&ic=undefined&s=undefined&hd=undefined&latest=undefined©right=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=https%3A%2F%2Fss0.baidu.com%2F7Po3dSag_xI4khGko9WTAnF6hhy%2Fbaike%2Fs%3D290%2Fsign%3D5fc29a19b8a1cd1101b675298912c8b0%2Fa50f4bfbfbedab64a45133e9f536afc379311ef3.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fkwthj_z%26e3Bkwt17_z%26e3Bv54AzdH3Fwsk74AzdH3F80b89cAzdH3F80b89c&gsm=b4&rpstart=0&rpnum=0&islist=&querylist=&nojc=undefined" style="float:right; margin: -10px 0px 10px 20px; text-align:left"
|<center>'''程序计数器'''<br><img
src=" https://ss0.baidu.com/7Po3dSag_xI4khGko9WTAnF6hhy/baike/s%3D290/sign=5fc29a19b8a1cd1101b675298912c8b0/a50f4bfbfbedab64a45133e9f536afc379311ef3.jpg" width="280"></center><small> 圖片來自百度</small>
|}
'''在电脑处理器中的一个寄存器'''
程序计数器是用于存放下一条指令所在单元的地址的地方。
当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到[[指令寄存器]]中,此过程称为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指令的地址。此后经过分析指令,执行指令。完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令。
*中文名:[[程序计数器]]
*外文名;Program Counter
*外语简称:PC
==简介==
程序计数器是计算机[[处理器]]中的[[寄存器]],它包含当前正在执行的[[指令]]的地址(位置)。当每个指令被获取,程序计数器的存储地址加一。在每个指令被获取之后,程序计数器指向顺序中的下一个指令。当计算机重启或复位时,程序计数器通常恢复到 <ref>[https://baike.baidu.com/reference/3219536/2afdCafmG2qOC29OlXoLj3G6wDSpwRdJQlXZLBg7PHW2NOI2FWZPz0e99iNtx9vG8RdGCwUtTP6rrzPF9B118oHwMwcFcUqa3Gvgyjppbc9b9EIO techtarget] </ref> 零。
冯 ·诺伊曼计算机体系结构的主要内容之一就是“程序预存储,计算机自动执行”!处理器要执行的程序(指令序列)都是以二进制代码序列方式预存储在计算机的存储器中,处理器将这些代码逐条地取到处理器中再译码、执行,以完成整个程序的执行。为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条取指指令的地址。程序计数器(PC )正是起到这种作用,所以通常又称之为‘指令计数器’。
在程序开始执行前,将程序指令序列的起始地址,即程序的第一条指令所在的内存单元地址送入PC,CPU按照 PC的指示从内存读取第一条指令(取指)。当执行指令时,CPU自动地修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数(指令字节数),使 PC总是指向下一条将要取指的指令地址。由于大多数指令都是按顺序来执行的,所以修改PC 的过程通常只是简单的对PC 加“指令字节数”。
当程序转移时,转移指令执行的最终结果就是要改变PC的值,此PC值就是转去的目 标地址。处理器总是按照PC 指向取指、译码、执行,以此实现了程序转移。
ARM 处理器中使用R15 作为PC,它总是指向取指单元,并且ARM 处理器中只有一个PC 寄存器,被各模式共用。R15 有32 位宽度(下述标记为R15[31:0],表示R15 的‘第31位’到‘第0位'),ARM 处理器可以直接寻址4GB的地址空间(2^32 = 4G )。<ref>[https://baike.baidu.com/reference/3219536/70d8Du9IkogYNqEGRKGTIlJLgait8xDaKONWn5wVdHu2z68jTfhnQ3lWlhXXD5zwmH41eSwQ9FvKLD1Mb4MUUb16YdmkTmppfWbC9zkkilLu35cZmfYGg18q2ndw6iS0Ae5CK-nXdgv7srE_D08r_Z-MfsOcbLScAuumDDE7gdZ7dZHd9AbR5DgmzUbY2Z6kHc2LLTzof2Xf77LVDzA_L46fPHG-fyQY .百度文库[引用日期2015-02-27]] </ref>
==特点==
为了保证程序(在[[操作系统]]中理解为[[进程]])能够连续地执行下去,处理器必须具有某些手段来确定下一条指令的地址。而程序计数器正是起到这种作用,所以通常又称为指令计数器。在程序开始执行前,必须将它的起始地址,即程序的第一条指令所在的内存[[单元地址]]送入程序计数器,因此程序计数器的内容即是从内存提取的一条指令的地址。当执行指令时,处理器将自动修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。<ref>[https://baike.baidu.com/reference/3219536/4a971t5pZWf5AAyY-7Uks3KJP2IW6CY2xIzzISNDPXSer719Mzhme8kWNJdcd8wdVjbt84g7cCtOAAsR9Dz_Lc829n1OeA .51cto] </ref>
但是,当遇到转移指令如JMP(跳转、外语全称:JUMP)指令时,后继指令的地址(即PC的内容)必须从指令寄存器中的地址字段取得。在这种情况下,下一条从内存取出的指令将由转移指令来规定,而不像通常一样按顺序来取得。因此程序计数器的结构应当是具有寄存信息和计数两种功能的结构。
'''视频'''
'''程序计数器详解'''
[https://www.bilibili.com/video/BV1tq4y1R7SP/?p=3 哔哩哔哩]
==参考文献==
{{Reflist}}
==参考文献==
{{Reflist}}
|<center>'''程序计数器'''<br><img
src=" https://ss0.baidu.com/7Po3dSag_xI4khGko9WTAnF6hhy/baike/s%3D290/sign=5fc29a19b8a1cd1101b675298912c8b0/a50f4bfbfbedab64a45133e9f536afc379311ef3.jpg" width="280"></center><small> 圖片來自百度</small>
|}
'''在电脑处理器中的一个寄存器'''
程序计数器是用于存放下一条指令所在单元的地址的地方。
当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到[[指令寄存器]]中,此过程称为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指令的地址。此后经过分析指令,执行指令。完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令。
*中文名:[[程序计数器]]
*外文名;Program Counter
*外语简称:PC
==简介==
程序计数器是计算机[[处理器]]中的[[寄存器]],它包含当前正在执行的[[指令]]的地址(位置)。当每个指令被获取,程序计数器的存储地址加一。在每个指令被获取之后,程序计数器指向顺序中的下一个指令。当计算机重启或复位时,程序计数器通常恢复到 <ref>[https://baike.baidu.com/reference/3219536/2afdCafmG2qOC29OlXoLj3G6wDSpwRdJQlXZLBg7PHW2NOI2FWZPz0e99iNtx9vG8RdGCwUtTP6rrzPF9B118oHwMwcFcUqa3Gvgyjppbc9b9EIO techtarget] </ref> 零。
冯 ·诺伊曼计算机体系结构的主要内容之一就是“程序预存储,计算机自动执行”!处理器要执行的程序(指令序列)都是以二进制代码序列方式预存储在计算机的存储器中,处理器将这些代码逐条地取到处理器中再译码、执行,以完成整个程序的执行。为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条取指指令的地址。程序计数器(PC )正是起到这种作用,所以通常又称之为‘指令计数器’。
在程序开始执行前,将程序指令序列的起始地址,即程序的第一条指令所在的内存单元地址送入PC,CPU按照 PC的指示从内存读取第一条指令(取指)。当执行指令时,CPU自动地修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数(指令字节数),使 PC总是指向下一条将要取指的指令地址。由于大多数指令都是按顺序来执行的,所以修改PC 的过程通常只是简单的对PC 加“指令字节数”。
当程序转移时,转移指令执行的最终结果就是要改变PC的值,此PC值就是转去的目 标地址。处理器总是按照PC 指向取指、译码、执行,以此实现了程序转移。
ARM 处理器中使用R15 作为PC,它总是指向取指单元,并且ARM 处理器中只有一个PC 寄存器,被各模式共用。R15 有32 位宽度(下述标记为R15[31:0],表示R15 的‘第31位’到‘第0位'),ARM 处理器可以直接寻址4GB的地址空间(2^32 = 4G )。<ref>[https://baike.baidu.com/reference/3219536/70d8Du9IkogYNqEGRKGTIlJLgait8xDaKONWn5wVdHu2z68jTfhnQ3lWlhXXD5zwmH41eSwQ9FvKLD1Mb4MUUb16YdmkTmppfWbC9zkkilLu35cZmfYGg18q2ndw6iS0Ae5CK-nXdgv7srE_D08r_Z-MfsOcbLScAuumDDE7gdZ7dZHd9AbR5DgmzUbY2Z6kHc2LLTzof2Xf77LVDzA_L46fPHG-fyQY .百度文库[引用日期2015-02-27]] </ref>
==特点==
为了保证程序(在[[操作系统]]中理解为[[进程]])能够连续地执行下去,处理器必须具有某些手段来确定下一条指令的地址。而程序计数器正是起到这种作用,所以通常又称为指令计数器。在程序开始执行前,必须将它的起始地址,即程序的第一条指令所在的内存[[单元地址]]送入程序计数器,因此程序计数器的内容即是从内存提取的一条指令的地址。当执行指令时,处理器将自动修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。<ref>[https://baike.baidu.com/reference/3219536/4a971t5pZWf5AAyY-7Uks3KJP2IW6CY2xIzzISNDPXSer719Mzhme8kWNJdcd8wdVjbt84g7cCtOAAsR9Dz_Lc829n1OeA .51cto] </ref>
但是,当遇到转移指令如JMP(跳转、外语全称:JUMP)指令时,后继指令的地址(即PC的内容)必须从指令寄存器中的地址字段取得。在这种情况下,下一条从内存取出的指令将由转移指令来规定,而不像通常一样按顺序来取得。因此程序计数器的结构应当是具有寄存信息和计数两种功能的结构。
'''视频'''
'''程序计数器详解'''
[https://www.bilibili.com/video/BV1tq4y1R7SP/?p=3 哔哩哔哩]
==参考文献==
{{Reflist}}
==参考文献==
{{Reflist}}