计算机编程语言
计算机编程语言是一套什么系统?
编写某种计算机语言表示出这个计算过程的行为就是编写程序
程序:
- 程:计算过程
- 序:序列
1+2 就是一个计算过程
+1 +2 +3 就是计算过程的序列
进制
位的概念
二进制 十进制
原码 反码 补码
计算机存储数字都是以补码的形式存储的,
好处是方便计算,只用一条电路就可以实现正数和负数的计算
有符号数(首位为0代表正数 首位为1代表负数) 无符号数
正数的原码、反码和补码相同
负数的补码是其反码加1,因此可以通过反码得到补码
原码 7 – 0111 -7 – 1000 0111
反码 正数的原码和反码相同 负数的反码 符号位不变 其余取反 -7 1111 1000
补码 正数的补码和原码相同 负数的补码是反码加1 -7 1111 1001
汇编语言和二进制
计算机是怎么实现计算的?
计算机由很多部件组成,能够正确的组织一起运行指令,告诉计算机按照我们的意愿进行计算。
机器指令:01100101010b CPU部件,中央处理器来执行计算,这一串二进制数字转化为高低电频驱动计算机运行
机器指令的逻辑含义:16进制数字表示某种编号信息
使用汇编指令来表示机器指令,适应人类的逻辑思维
编译器:把一套语言编译成另外一套语言
汇编语言:
- 汇编指令:可以通过编译器表示成机器指令(机器码)
- 伪指令:作用就是告诉编译器 这里怎么翻译 那里怎么翻译 由编译器执行
- 其他符号:+ - * / 由编译器处理的
汇编指令存在哪里?
内存(内存储器) memory
- 主内存:绝大多数指令和数据都是存在在主内存
内存编号:段地址:偏移地址,从0开始的。内存地址为什么从0开始?
通过电路来表示内存地址, 高低电平
计算机中使用 0 1 表示高低电平
能表示的地址范围 000…00——111…11
同一串16进制的机器码 产生两种解释,既可以是数据又可以是指令
那么CPU怎么区分?CPU怎么读取内存指令?
cpu和内存条通过主板上的电路通信,这个电路至少包含三种信息:1、内存编号信息 (地址线) 2、数据信息 (数据线) 3、读或写(控制信息 控制线)
内存的最小单元是字节 Byte 1B=8bit
计量单位
换算关系
1KB = 1024B =1024*8 b
1MB = 1024 KB
1GB = 1024 MB
寻址能力:寻找内存地址的能力
假设只有一根地址线,就是只有两种状态 0/1 无法表示三个地址
地址线的数量决定了能够表示的地址范围及地址数量
n个地址线 可以表示 2^n 个地址数量
- 地址线的数量决定了cpu的寻址能力
- 数据线的数量决定了cpu与其他部件进行数据传送时,一次性传送多少数据的能力
- 控制线的数量决定了cpu对主板上其他部件的控制能力
写入的数据是写到内存条中了吗?不是,写到显卡上的显存上
cpu是如何看待插在主板上的物理设备的?
把这些物理设备都看成一段连续的内存地址,每个物理设备都占有一段内存地址
内存
- RAM内存:允许CPU读取和写入数据,断电后内存中的指令和数据都丢失
- ROM内存:允许CPU读取数据不允许写入数据,断电后指令和数据还存在
主板上 显卡上 网卡上 有ROM内存
冯诺依曼体系
硬盘(外存储器 u盘、光盘等):允许CPU读取和写入数据,断电后内存中的指令和数据不会丢失
0 1表示成了磁极
输入设备:鼠标 键盘 麦克风 等等
输出设备:音响 显示器 等等
端口地址 CPU通过端口来获取数据的,端口中也有存储数据的地方
芯片 CPU也是一块芯片,都有存储数据的地方,鼠标和键盘都有芯片存储数据
键盘按下A 首先是存储到键盘的内存,然后通过连到主板的线发送给端口,然后CPU通过主板上的三根线来读写控制数据
计算机系统漫游
- 信息:位+上下文 系统中所有的信息、磁盘文件、内存中的程序or数据、网络上传送的数据都是以一段二进制表示的,那是怎么区分这些数据对象的?通过读取数据对象的上下文
- 程序执行过程
#include <stdio,h>
int main(){
printf("hello world");
return 0;
}
-
- 每条C语言都必须被其他程序转化为一系列的“低级”机器语言指令,然后这些指令按照一种称为可执行目标程序的格式打好包,以二进制磁盘文件的形式存在起来,目标程序也就是可执行目标文件。
- gcc -o hello hello.c 翻译过程有四个阶段
- hello.c->预处理器->hello.i->编译器->hello.s->汇编器->hello.o->链接器->可执行文件
系统硬件组成
- 总线:通常总线被设计成传送指定长度的字节快(4B/8B 32b/64b)
- I/O设备:系统与外部世界联系通道
- 主存:RAM,逻辑上是一个线性数组 每个字节都有唯一的地址(数组索引),地址从0开始
- 处理器(CPU):核心是寄存器 任何时候都有一个指令寄存器(程序计数器)指向主存的某条机器语言指令,从系统通电开始直到断电一直执行
加载:从主存复制一个字节/字到寄存器,覆盖之前的内容
存储:从寄存器复制一个字节/字到主存的某个位置,覆盖之前的内容
操作/计算:把2个寄存器的内容复制到ALU(算数/逻辑单元)进行计算,将结果存放到一个寄存器中
跳转:把指令寄存器的值覆盖要跳转的内存地址
深入了解参考 计算机组成原理 艾伦