CSAPP读书笔记 第三章 程序的机器级表示

目录

程序编码

GCC  -S    -c

 数据格式

访问信息

​编辑 新的寄存器

​编辑 多样的寻址方式

 简单的MOV指令

 零扩展数据传送指令 MOVZ

 符号扩展数据传送指令 MOVS

压入弹出栈

 算数和逻辑操作

 leaq

 移位操作

 特殊的算法操作

 控制

条件码(总是记不住)

 比较和测试指令

访问条件码

set指令

 跳转指令

JMP

 注意:

 例子:

条件传送指令

 条件控制和条件传送指令的区别 

循环,for,switch

过程

 运行时栈

转移控制

 传递函数参数的寄存器

 被调用者保存寄存器和调用者保存寄存器

数据分配和访问

指针运算

 按照行优先排列的数组

 嵌套数组

 定长数组,变长数组

异质的数据结构


程序编码

GCC  -S    -c

 Linux自带反汇编器

 数据格式

访问信息

指令变种

 新的寄存器

 多样的寻址方式

 

 简单的MOV指令

 

 零扩展数据传送指令 MOVZ

 符号扩展数据传送指令 MOVS

压入弹出栈

 算数和逻辑操作

 leaq

 移位操作

 特殊的算法操作

 控制

条件码(总是记不住)

 

 比较和测试指令

访问条件码

set指令

 跳转指令

JMP

 注意:

 例子:

注意地址的计算

条件传送指令

 条件控制和条件传送指令的区别 

循环,for,switch

while循环和do while循环只是上面指令的联合使用,没什么好记的

过程

 运行时栈

 调用过程时可以通过寄存器传递六个整数(指针或整数),如果比六个多的需要存储在栈内进行传送

转移控制

 传递函数参数的寄存器

 被调用者保存寄存器和调用者保存寄存器

数据分配和访问

指针运算

 

 按照行优先排列的数组

 嵌套数组

 定长数组,变长数组

异质的数据结构

 斯巴拉西,原来结构体是这样储存的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值