CPU结构和指令集
CPU是名称为中央处理单元,简称处理器,主要的作用是从内存中读取指令,然后解码和执行。
CPU架构就是CPU内部设计的结构,是一堆硬件组成,用于实现指令集
所规定的操作
指令集包含了一系列的操作码(opcode),以及特定的CPU执行的基本命令。如果想要设计CPU,就得先解决使用什么样的指令集,然后设计硬件的电路。根据现在指令集的特征,可以分为两类:CSSC和RISC
由于指令集是一堆二进制数据,不方便阅读和理解,于是就有了汇编语言(Assembly language)
,汇编语言就是类似人类语言的方式对执行集进行描述,每个汇编指定都会对应的机械执行。再往后就有了C/C++等高级语言
指令集架构
- CISC: 复杂指令集计算机,代表的是x86处理器
- RISC: 精简指令集计算机,典型代表是ARM处理器
需要注意的一点是RISC可以完全使用寄存器来传递参数,而CISC只能使用栈,或者是栈和寄存器结合起来使用
x86/x64汇编基础
我们主要以了解x86的汇编语法来了解汇编语言
x86汇编主要的语法有两种风格: AT&T
和Intel
风格
通常在Linux
中见到的AT&T
的风格比较多,常见的GCC、GDB、objdump
都是使用的AT&T
风格,他们两个之间语法有一些简单的区别,我们主要了解Intel风格
有很多细节的不同,AT&T
的特征是寄存器和数字的前面通常会加入% $
的符号,Intel
没有,十六进制使用的是0x
而Intel
使用的是后方计入h
寄存器
寄存器从8位到16位,在到32位以及64为处理器,寄存器的名称有一些变化。
您想要一个从8位到64位寄存器名称变化的表格。以下是一个简单的表格,显示了不同位数寄存器的常见名称。请注意,这只是一个基本的示例,实际的寄存器名称可能因处理器架构、设计或特定应用而有所不同。
位数 | 寄存器名称示例 |
---|---|
8位 | AL, AH, BL, BH, CL, CH, DL, DH |
16位 | AX, BX, CX, DX, SP, BP, SI, DI |
32位 | EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI |
64位 | RAX, RBX, RCX, RDX, RSP, RBP, RSI, RDI |