2.处理器—奔腾不息 22为什么它能明白? 口程序员编写的程序通常叫做源代码。 口问题是:计算机的工作基础是数字电路,它只能识别处理 1”和“0″这样的位(比特bt),无法识别和处理源 代码,那么,为什么它(计算机)能够明白程序源代码的 含义,并执行相应的操作呢?
2. 处理器——奔腾不息 程序员编写的程序通常叫做源代码。 问题是:计算机的工作基础是数字电路,它只能识别处理 “1”和“0”这样的位(比特 bit),无法识别和处理源 代码,那么,为什么它(计算机)能够明白程序源代码的 含义,并执行相应的操作呢? 11 2.2为什么它能明白?
2.处理器—奔腾不息 2.3从头开始 口先把问题简单化
2. 处理器——奔腾不息 先把问题简单化 12 2.3从头开始
2.处理器—奔腾不息 2.3从头开始 口复杂=简单+简单 口任何一个复杂的运算,都是由一些简单的运算组成而成 个简单的运算可以用下面的模型表示。 输入数据 运算 输出数据 口例如,C=A+B,输入数据是a和b,输出数据是C,运算 符是加法
2. 处理器——奔腾不息 复杂=简单+简单 任何一个复杂的运算,都是由一些简单的运算组成而成。 一个简单的运算可以用下面的模型表示。 例如,C=A+B,输入数据是a和b,输出数据是c,运算 符是加法。 13 2.3从头开始
14 2.处理器—奔腾不息 2.3从头开始 口指令 口把一个基本的C=A+B操作,分解为下面小的步骤完成 口 load r3,#0;注释:从内存地址0处取A这个值,放在R3中 口 load r2,#1; 注释:从内存地址1处取B这个值,放在R2中 口adR0,R3,R2;注释:把R3和R2相加,结果存放到R0中 口 store r0,#2;注释:把RO中的值存放在内存地址2中 口上面的步骤中,每一行语句就是一条指令,其中load、 ad、 store被称作操作码,后面跟着的是操作数,RO R2、R3是用来临时存放中间计算结果的存储器,在计算 机中它们被称作寄存器
2. 处理器——奔腾不息 指令 把一个基本的C=A+B操作,分解为下面小的步骤完成: load R3, #0; 注释:从内存地址0处取A这个值,放在R3中 load R2, #1; 注释:从内存地址1处取B这个值,放在R2中 add R0,R3,R2; 注释:把R3和R2相加,结果存放到R0中 store R0,#2; 注释:把R0中的值存放在内存地址2中 上面的步骤中,每一行语句就是一条指令,其中load、 add、store被称作操作码,后面跟着的是操作数,R0、 R2、R3是用来临时存放中间计算结果的存储器,在计算 机中它们被称作寄存器。 14 2.3从头开始
15 2.处理器—奔腾不息 2.3从头开始 口问题是:处理器中的集成电路只能识别0和1,不认识load add这些操作指令。 ¤用二进制数对上面的指令进行编码就可以了,例如00表示 load,01表示add,10表示 store,11表示第4条操作码 。同样,寄存器R0等也可以用二迸制编码表示。 口这样,上述每一行指令语句就变成了二进制代码的形式, 例如用01001110表示ADDR0,R3,R2。当处理器在 读到指令01001110时,就能够识别这条指令,解读出操 作码和操作数,然后执行了
2. 处理器——奔腾不息 问题是:处理器中的集成电路只能识别0和1,不认识load 、add这些操作指令。 用二进制数对上面的指令进行编码就可以了,例如00表示 load,01表示add,10表示store,11表示第4条操作码 。同样,寄存器R0等也可以用二进制编码表示。 这样,上述每一行指令语句就变成了二进制代码的形式, 例如用01001110表示ADD R0,R3,R2。当处理器在 读到指令01001110时,就能够识别这条指令,解读出操 作码和操作数,然后执行了。 15 2.3从头开始