程序是怎么跑起来的-1

就像本书的介绍,这是“计算机组成原理”图解趣味版,对于没有计算机基础,但是有兴趣的同学是不错的一本介绍的书籍。

作为一个业余程序员,自己编写的程序,又是如何利用了硬件在电脑上跑起来的一直不解,特别是接触c++后,牵扯到了内存的管理,以前在AS3上,都是简单的做一些功能性工作,从来没有了解过内存的事,就像之前完全不知道Android是Java编写的一样。下面就是对本书一点读书笔记。

1.1.什么是CPU

功能类似于人类的大脑。从功能来看,分为4个部分,寄存器,控制器,运算器,时钟。

寄存器:暂存指令,数据等处理对象。因为有存储功能,可以看作是内存的一种。不同种类的CPU,寄存器的数量也是不一的,一般20-100个。

控制器:将内存上的指令,数据等读入到寄存器中。

运算器:负责运算从内存读入到寄存器中的数据。

时钟:CPU开始计时的时钟信号,时钟信号频率越高,CPU运行越快,我的I5是2.5GHz


1.2程序员只需了解寄存器,程序是把寄存器作为对象描述

汇编语言和机器语言基本上是一一对应的。编译就是将我们的程序编译成机器语言。寄存器的主要类和功能。

累加寄存器:存储执行运算的数据和运算后的数据

标志寄存器:存储运算处理后的CPU状态

程序寄存器:存储下一个指令所在内存地址

基址寄存器:存储数据内存的起始地址

变址寄存器:存储基址寄存器的相对地址

通用寄存器:存储任意数据

指令寄存器:存储指令。CPU内部使用

栈寄存器:存储栈区域的起始地址


1.3决定程序流程的程序计数器

用户发出启动程序的指示后,操作系统会把硬盘中保存的程序复制到内存中。计数器会被分配一个默认地址,CPU每执行一个指令,计数器就+1,如果指令占用多个内存地址,则增加指令长度。


1.4程序流程有三种,顺序,条件,和循环,但是机器只能是顺序

主要通过内存跳转指令,jump

1.5函数调用

比如,在0232的地址上,我们调用了在0432(函数原点)上的函数,调用完成后,我们知道需要执行0233的地址上内容,但是这时的程序计数器,已经变成了0533(函数结束点)的地址了,我们回不去了,所以我们在调用函数,就是利用机器语言的call,return。我们在调用函数的时候,机器执行的是call指令,这时会在栈寄存器中,将0233保存在其中,然后我们函数调用完成了,机器执行return指令,将0233地址从栈寄存器中取出来,所以就继续下去了

1.6基址,变址寄存器

基址+变址=真实地址,好比,十进制1001,1002,1003,1004 ,基数我们定为1000,变数就是1,2,3,4




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值