3.1 历史观点
Inter 处理器俗称x86。
3.2 程序编码
3.2.1 机器级代码
计算机系统使用了多种不同形式的抽象,利用更简单的模型来隐藏实现的细节。
机器级编程:两种抽象尤为重要
- 指令集体系结构或者指令集架构(Instruction Set Architecture,ISA)来定义机器级程序的格式和行为。它定义了处理器状态、指令的格式,以及每条指令对状态的影响。
大多数ISA,包括x86-64,将程序行为描述成每条指令按顺序执行。而实际上,处理器并发地执行许多指令。但可以采取措施使得整体行为和顺序执行一致。 - 机器级程序使用的内存地址是虚拟地址,提供的内存模型看上去是一个非常大的字节数组。
程序计数器(PC,x86-64中用%rip):给出要执行的下一条指令的在内存中的地址。
整数寄存器文件:16个命名的位置,分别存储64位的值。存储地址或者整数数据。有的寄存器用来记录某些重要的程序状态,而其他寄存器保存临时数据,如过程中的参数和局部变量以及函数的返回值。
条件码寄存器:保存最近执行的算术或逻辑指令的状态信息,它们用来控制或数据流的条件变化,如if和while。
一组向量寄存器可以存放一个或多个整数和浮点数值。
3.2.2 代码示例
3.2.3 关于格式的注解
gcc产生的汇编有点难读
3.3 数据格式
字:16位 双字:32位 四字:64位
char * 在32位机器上是4个字节
3.4 访问信息
CPU包含一组16个存储64位值的通用目的寄存器
3.4.1 操作数指令符
三种类型:
立即数,寄存器,内存引用
练习3.1
3.4.2 数据传输指令
3.4.3 数据传输示例
3.4.4 压入和弹出栈元素
栈指针%rsp 保存栈顶元素指针