汇编语言
汇编也是一门编程语言,与Java,C++,python等高级语言无异,只不过汇编更加接近硬件,代码执行效率高。
代码执行效率:二进制>汇编>C>java
所有编程语言都有相应语法,汇编也不例外,语法是人定的,只是一套公共协议,目的是方便程序员进行程序开发。
常见的CPU架构:
- X86架构:PC端主流 高性能高功耗
- ARM架构:移动端主流 体积小低功耗
- MIPS架构:龙芯3号 国产CPU
架构:一套规则
架构不等同于硬件
不同架构使用的指令集不一样,X86使用了CISC复杂指令集,ARM采用了RISC精简指令集。
寄存器
寄存器可以理解为是寄生在CPU上存放数据的容器。在计算机中,用于存放数据的容器有很多,比如内存条,硬盘等等。
寄存器是汇编语言的基石
寄存器的不同之处:
- 寄存器靠近CPU,读写数据速度远大于内存。
- 进行数据的临时储存。
缓存
寄存器和缓存是两个概念,由于CPU执行速度太快,而内存读写数据远远跟不上,这时需要借助缓存进行数据缓冲,相当于是寄存器和内存之间的中间桥梁,这样CPU在执行指令的时候能够有源源不断的数据供给。
寄存器的分类
在高级语言中,如果要对两个变量进行交换,我们通常的做法是使用一个temp临时变量,比如:
int a=1;
int b=1;
int temp;
//数据交换
temp=a;
a=b;
b=temp;
寄存器是一个存储容器,也可以通俗理解为是一个变量,那么CPU再进行数据交换时明显一个寄存器是不够的,在8086CPU中,通用寄存器有好几个,比如ax,bx,cx,dx 这些名称是固定的,CPU的不同名称也各不相同。每种CPU都有相应的通用寄存器,寄存器数量越多,运算效率越高。
- 通用寄存器(通用):用于存放临时数据,可以简单理解为高级语言中的临时变量。
- 段寄存器(特有):内存分段管理,X86架构中分为数据段,代码段和栈段,ARM架构中没有段寄存器。
- 浮点寄存器(特有):专用于浮点数的运算。
- 向量寄存器(特有):专用于向量运算。
- 标志寄存器
- 状态寄存器
- …………
通用寄存器的命名
- 在X86架构中,一共有四个通用寄存器,以16位X86为例,分别取名为ax,bx,cx,dx,最大只能装16位的数据。
- 在ARM架构中,一共有31个通用寄存器,以64位ARM为例,从x0到x30.
- 在MIPS架构中,一共有32个通用寄存器,从$0到$31.
在X86架构中,不同精度CPU通用寄存器名称有所区分:
e是扩展的意思,在386以前,CPU的寄存器的16位的,用AX,BX表示。
386及以后的CPU,他们的寄存器是32位的,所以就用多一个e来表示。