程序计数器,只有1行的有用程序是很少见的,机器语言的程序也是如此。在对CPU有了一个大体印象后,接下来我们看一下程序是如何按照流程来运行的。
图1-4是程序启动后内存内容的模型。用户发出启动程序的指示后,Windows等操作系统会把硬盘中保存的程序复制到内存中。示例中的程序实现的是将123和456两个数值相加,并将结果输出到显示器上。正如前文所介绍的那样,存储指令和数据的内存,是通过地址来划分的。由于使用机器语言难以清晰地表明各地址存储的内容,因此这里我们对各地址的存储内容添加了注释。实际上,一个命令和数据通常被存储在多个地址上,但为了便于说明,图1-4中把指令、数据分配到了一个地址中。
图1-4 内存中配置的程序示例(显示相加的结果)
地址0100是程序运行的开始位置。Windows等操作系统把程序从硬盘复制到内存后,会将程序计数器(CPU寄存器的一种)设定为0100,然后程序便开始运行。CPU每执行一个指令,程序计数器的值就会自动加1。例如,CPU执行0100地址的指令后,程序计数器的值就变成了0101(当执行的指令占据多个内存地址时,增加与指令长度相应的数值)。然后,CPU的控制器就会参照程序计数器的数值,从内存中读取命令并执行。也就是说,程序计数器决定着程序的流程。
评论前必须登录!
注册