csapp第三章复习知识点总结

本文总结了CSAPP第三章的内容,包括程序编码的步骤,机器级代码的两种抽象,数据格式,访问信息的细节如操作数指示符和数据传送指令,以及算术和逻辑操作,特别是移位操作和特殊算术运算如乘法和除法。还讨论了控制流程中的条件码。
摘要由CSDN通过智能技术生成

3.2程序编码

-og优化,

程序代码的转换:编译器将代码变成汇编代码,汇编器将代码变成二进制目标代码文件(不包含全局值的地址),链接器将目标代码文件和实现库函数的代码合并。产生可执行代码文件。

3.2.1 机器级代码

计算机系统有两种抽象。

一种是指令集架构(ISA)定义了处理器状态,指令的格式,以及每条指令对状态的影响,将程序描述成好像每条代码是顺序执行的。

一种是虚拟地址,将内存看作一个巨大的字节数组空间。

对c语言程序员隐藏的处理器状态都是可见的:

1.程序计数器

2.通用寄存器

3.条件码寄存器(算术或逻辑指令的状态信息)

4.向量寄存器(一个或多个整数或浮点数值)

程序内存包括:程序的可执行机器代码,操作系统所需要的一些信息,函数调用和返回所需要的栈,用户分配的内存块。

3.2.2 代码示例

linux>gcc -og -s(产生汇编文件 mstore.s)

linux>gcc -og -o(产生可执行代码文件 3.2初始介绍)

linux>gcc -og -c(编译并汇编该代码 产生目标代码文件【注意与可执行代码文件区分】 mstore.o)

反汇编器

linux>objdump -d mstore.o

将二进制代码文件转化为汇编文件,反汇编器只是基于机器代码文件的字节序列来确定汇编代码,不需要访问源代码或汇编代码

链接器的任务之一就是为函数调用找到匹配的函数的可执行代码的位置。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值