深入理解计算机系统 第三章 程序的机器级表示 笔记

3.1 历史观点

Inter 处理器俗称x86。

3.2 程序编码

在这里插入图片描述

3.2.1 机器级代码

计算机系统使用了多种不同形式的抽象,利用更简单的模型来隐藏实现的细节。
机器级编程:两种抽象尤为重要

  1. 指令集体系结构或者指令集架构(Instruction Set Architecture,ISA)来定义机器级程序的格式和行为。它定义了处理器状态、指令的格式,以及每条指令对状态的影响。
    大多数ISA,包括x86-64,将程序行为描述成每条指令按顺序执行。而实际上,处理器并发地执行许多指令。但可以采取措施使得整体行为和顺序执行一致。
  2. 机器级程序使用的内存地址是虚拟地址,提供的内存模型看上去是一个非常大的字节数组。

程序计数器(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 保存栈顶元素指针
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.5 算术和逻辑操作

在这里插入图片描述

3.5.1 加载有效地址

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.5.2 一元和二元操作符

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.5.3 移位操作

在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.5.4 讨论

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.5.5 特殊的算术运算

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值