说明
上一篇文章确实缺少一些必备的知识的讲解,这一篇补上这些知识。
CPU
cpu是计算机最核心的组成。cpu功能很多,但我们只需要记住:运算和寻址两个功能就可以了。运算就是加减乘除,就是做“小学数学题”。寻址就是找到内存条的某个内存单位。
cpu内部包含很多不同功能的寄存器,它们被用来直接参与运算。
几个关键寄存器
- eax:累加寄存器,通常也作为函数返回值
- ebp:栈底寄存器,永远指向栈底
- esp:栈顶寄存器,永远指向栈顶。它与ebp共同构成栈区。
几条指令:
- push a 把a入栈(a可以是内存的一个单元,也可以是寄存器),esp增加一个单元。
- pop a 把a弹栈(同上),esp减小一个单元
- mov eax, a 把a赋值给eax寄存器
这几条指令足够了,有用到其他的,我们再介绍
内存
内存就是内存条,计算机核心部件之一。cpu和内存条一共有三条线相连:地址总线,数据总线,控制总线。
- 地址总线:用来寻址的线,就是通过这个线可以找到具体的某个内存单元。32位机器地址总线就有32根细线组成每根线有2种状态,那么可以计算出2^32=4GB,这就是32位机器最大支持4GB的原因。
- 数据总线:就是CPU和内存条之间传输数据的。32位一次传送4字节,64位传送8个字节
- 控制总线:就是发送命令告诉内存条究竟是读还是写等操作的。
总结
ebp、esp分别只想内存条的两个位置构成栈区,函数执行时,局部变量就是在栈区的。CPU和内存之间存在3根线用来进行数据交互,和指令发送。计算机实际上就是在内存条上取址执行。计算机的基本原理就是这样。
网友评论