【第1章:对程序员来说CPU是什么】决定程序流程的程序计数器

程序计数器

Posted by x-jeff on November 12, 2022

博客为参考《程序是怎样跑起来的》一书,自己所做的读书笔记。
本文为原创文章,未经本人允许,禁止转载。转载请注明出处。

1.决定程序流程的程序计数器

图1-4是程序启动时内存内容的模型。用户发出启动程序的指示后,Windows等操作系统$^1$会把硬盘中保存的程序复制到内存中。示例中的程序实现的是将123和456两个数值相加,并将结果输出到显示器上。正如前文所介绍的那样,存储指令和数据的内存,是通过地址来划分的。由于使用机器语言难以清晰地表明各地址存储的内容,因此这里我们对各地址的存储内容添加了注释。实际上,一个命令和数据通常被存储在多个地址上,但为了便于说明,图1-4中把指令、数据分配到了一个地址中。

  1. 操作系统(operating system)是指管理和控制计算机硬件与软件资源的计算机程序。

地址0100是程序运行的开始位置。Windows等操作系统把程序从硬盘复制到内存后,会将程序计数器(CPU寄存器的一种)设定为0100,然后程序便开始运行。CPU每执行一个指令,程序计数器的值就会自动加1。例如,CPU执行0100地址的指令后,程序计数器的值就变成了0101(当执行的指令占据多个内存地址时,增加与指令长度相应的数值)。然后,CPU的控制器就会参照程序计数器的数值,从内存中读取命令并执行。也就是说,程序计数器决定着程序的流程。