基础定义
集成电路(Integrated Circuit):CPU 和 内 存 是 由 许 多 晶 体 管 组 成 的 电 子 部 件
CPU 组成: 是用来表示计算机内部元件功能的术语,包含寄存器、控制器、运算器和时钟四个部分,各部分之间由电流信号相互连通
寄存器:用来暂存指令、数据等处理对象
控制器:负责把内存上的指令、数据等读入寄存器,并根据指令的执行结果来控制整个计算机
运算器:负责运算从内存读入寄存器的数据
时钟:负责发出 CPU 开始计时的时钟信号
补充
时钟信号英文叫作 clock puzzle。Pentium 2 GHz 表示时钟信号的频率为2 GHz(1 GHz = 10 亿次 / 秒)。也就是说,时钟信号的频率越高,CPU 的运行速度越快。
内存:通常所说的内存指的是计算机的主存储器(main memory),主存通过控制芯片等与 CPU 相连,主要负责存储指令和数据。
补充
主存通常使用 DRAM(Dynamic Random Access Memory,动态随机存取存储器)芯片。DRAM 可以对任何地址进行数据的读写操作,但需要保持稳定的电源供给并时常刷新(确保是最新数据),关机后内容将自动清除。
汇编语言: 用助记符(memonic)来编写程序,每一个原本是电气信号的机器语言指令都会有一个与其相应的助记符,助记符通常为指令功能的英语单词的简写
补充
mov 和 add 分别是数据的存储(move)和相加(addition)的简写。汇编语言和机器语言基本上是一一对应的
mov eax, dword ptr [ebp-8] …把数值从内存复制到 eax
add eax, dword ptr [ebp-0Ch] …exa 的数值和内存的数值相加
mov dword ptr [ebp-4], eax …把 exa 的数值(上一步的相加结果)存储在内存中
高级编程语言:是指能够使用类似于人类语言的语法来记述的编程语言的总称(Java,C,C++等)
机器语言:是指 CPU 能够直接解释和执行的语言
图:
汇编:通常我们将汇编语言编写的程序转化成机器语言的过程称为汇编
寄存器详解
主要功能
种 类 | 功 能 |
---|---|
累加寄存器(accumulator register) | 存储执行运算的数据和运算后的数据 |
标志寄存器(flag register) | 存储运算处理后的 CPU 的状态 |
程序计数器(program counter) | 存储下一条指令所在内存的地址 |
基址寄存器(base register) | 存储数据内存的起始地址 |
变址寄存器(index register) | 存储基址寄存器的相对地址 |
通用寄存器(general purpose register) | 存储任意数据 |
指令寄存器(instruction register) | 存储指令。CPU 内部使用,程序员无法通过程序对该寄存器进行读写操作 |
栈寄存器(stack register) | 存储栈区域的起始 |
32位 和 64位的操作系统的本质区别?
1 位(bit =binary digit)就是一个位数的二进制数,表示 0 或 1 的数值。32位 CPU 指的就是用 32 位的二进制数来表示数据及地址的数值。
1 位(bit =binary digit)就是一个位数的二进制数,表示 0 或 1 的数值。32位 CPU 指的就是用 32 位的二进制数来表示数据及地址的数值。
根据cpu就一次处理数据的能力,把处理器分为了32位和64位
32位操作系统可以寻址2的32次方个字节的内存范围,64位操作系统则可寻址2的64次方个字节的内存范围。换句话说,32位的操作系统理论上只能使用约4GB的内存,要是程序想使用超过4GB的内存,那么就要选择64位的操作系统。显然,64位比32的内存容量要大很多,内存容量的大小对运算速度有一定的影响,因而64位的运算速度理论上来说比32位快。
为什么通常使用 16 进制数来替代二进制数据?
二进制数的位数较多、不易理解时,通常使用十六进制数来代替二进制数(容易对照,易于理解)
我们用 A~F 来分别表示 10~15,那 么,二进制数的 4 位(0000 ~1111)就可以用十六进制数的 1 位(0~F)来表示
2的4次方是16,16种变化刚好穷尽。
对照表
二进制 | 十六进制 |
---|---|
0 | (0000) |
1 | (0001) |
2 | (0010) |
3 | (0011) |
4 | (0100) |
5 | (0101) |
6 | (0110) |
7 | (0111) |
8 | (1000) |
9 | (1001) |
A | (1010) |
B | (1011) |
C | (1100) |
D | (1101) |
E | (1110) |
F | (1111) |
条件分支和循环机制
顺序执行 是指按照地址内容的顺序执行指令
循环 是指重复执行同一地址的指令
条件分支 是指根据条件执行任意地址的指令
条件与循环方面的设计通常会用到条件限制,而条件当中的比较指令的本质又是什么呢?
比较指令 就是在 CPU 的内部做减法运算,依据计算出的值为 -1,0,1 来进行相应地址跳转
函数调用机制
使用的关键指令及功能
1、函数调用使用的是 call 指令
2、函数处理完毕后,再通过函数的出口来执行 return 命令,return 命令的功能是把保存在栈中的地址设定到程序计数器中
图:
CPU的常见指令汇总
类 型 | 功 能 |
---|---|
数据转送指令(MOV,MOVX,PUSH等) | 寄存器和内存、内存和内存、寄存器和外围设备之间的数据读写操作 |
运算指令(INC,DEC,DIV等) | 用累加寄存器执行算术运算、逻辑运算、比较运算和移位运算 |
跳转指令(JMP,RET等) | 实现条件分支、循环、强制跳转等 |
call/return 指令 | 函数的调用 / 返回调用前的地址 |