CSAPP 第三章 过程

CSAPP 第三章 过程

过程是怎么实现的. 过程在不同的语言中的表现形式不同, 比如函数, 方法等.但其底层都有一些共同的特性, 假设过程P调用过程Q: 传递控制: 进入Q的时候, 程序计数器的地址很显然要被设置成Q的起始指令所在的内存. 在返回的时候,则需要将程序计数器设置为P调用Q的指令之后的那条指令的地址. 传递数据

CSAPP 第三章 汇编指令 - 循环 和 switch

CSAPP 第三章 汇编指令 - 循环 和 switch

控制语句除了条件分支就是循环, 今天看循环的操作, 以及比较特殊的分支语句, 就是switch. do-while循环 while循环 for循环 switch语句 汇编指令并没有直接的指令对应循环, 而是用条件测试和跳转组合起来实现循环的效果. 汇编代码主要基于两种基本的循环模式. 先来看两种基本

CSAPP 第三章 汇编指令 - 条件分支

CSAPP 第三章 汇编指令 - 条件分支

控制语句就是分支,和循环. 今天先来看看分支的相关指令. 条件判断: 条件码 条件判断: 跳转指令 条件判断: 条件传送 条件码 条件码是一些特殊的寄存器, 在每次算术或者逻辑运算之后更新, 也有特殊的指令可以操作这些寄存器. 很多条件分支指令, 就是通过检测这些寄存器的值来实现的. 常用的条件码有

CSAPP 第三章 汇编指令 - 传送指令和算术指令

CSAPP 第三章 汇编指令 - 传送指令和算术指令

传送指令主要有如下: 普通传送 零扩展传送 符号扩展传送 压栈和弹栈 算术指令比较多了,而且也都区分长度,主要从以下几个方面介绍: leaq 指令 一元与二元操作 移位操作 特殊操作 - 128位扩展 数据传送指令 我们不生产数据,我们只是数据的搬运工. -MOV类指令. MOV类指令有四个变体,对

CSAPP 第三章 汇编初步和寄存器

CSAPP 第三章 汇编初步和寄存器

获取源程序对应的汇编程序 如果想要获取自己编写的源程序对应的汇编程序,基本步骤是: 将自己的文件用GCC转换成目标代码 使用反汇编器得到格式良好的汇编代码 其中第一步, 也可以直接使用GCC转换成汇编代码,可以指定优化的级别. 按照书上写了这么一个程序: long mult2(long, long)

CSAPP 第二章 浮点数

CSAPP 第二章 浮点数

二进制小数 就像十进制小数一样,二进制的小数点左边是正幂,右边是负幂,只不过幂底由10变成2。小数点可以移动,左移表示除以2,右移表示乘以2。 同十进制小数只能精确表示10的幂组成的数一样,二进制小数也只能精确表示由2的幂组成的数。同十进制小数一样,如果想要更接近不能精确表示的数,只有通过增加位数来

CSAPP 第二章 整数运算

CSAPP 第二章 整数运算

整数运算也分为两种,无符号整数和有符号整数。 无符号加减法 无符号就是简单将两个二进制位相加。但是结果存在溢出的问题,即结果无法放到字长的限制中去。 如果字长是w,则无符号数最大就是2的w次方减1,这就导致如果两个数的和如果到达2的w次方,结果实际上就少了2的w次方。比如字长为4,1001+1001

CSAPP 第二章 整数的表示

CSAPP 第二章 整数的表示

袁春风的书讲的稀里糊涂。确实直接看CSAPP就很好。 整数的大类有两种,一种只能表示非负数,一种可以表示负数,零和正数。虽然通常叫无符号数,但是CSAPP的这个讲法显然更容易懂。 无符号数的编码 无符号数的编码,等于每位二进制数乘以总权重,最右边一位是2的0次方,然后是2的1次方。依次类推。 无符号

CSAPP 第二章 信息存储

CSAPP 第二章 信息存储

CSAPP 第二章 信息存储 昨晚加班到2点钟,今天稀里糊涂的,还是做点题目来冷静一下。目前进度到40页,把第二章的第一部分,信息存储看完了。 第一大部分是进制之间的转换,目前主要是十六进制和二进制以及十进制之间的转换。 2.1 完成数字转换 0x39A7F8,转换成二进制,就是把每位16进制展开,

听

有了女儿每天都过生日!