20135219洪韶武-期中总结

 

 

一.第三章主要知识点

 

1.信息存储

 

  *机器级程序将存储器视为一个非常大的字节数组,成为虚拟存储器;存储器的每个字节都由一个唯一的数字来标识,成为他的地址。

 

  *十六进制表示法/十进制和十六进制转换

 

  *排列表示一个对象的字节的两个通用规则:小端法/大端法

 

  *字节变可见的三种情况

 

  *C语言中字符串被编码为一个以null字符结尾的字符数组

 

  *位级运算/逻辑运算/移位运算

 

2.整数表示

 

  *整数数据类型表示有限范围的整数

 

  *无符号编码,有符号编码,无符号数和有符号数之间转换

 

  *C语言中无符号有符号数之间的转换原则:底层的位保持不变

 

  *零扩展:在一个无符号数表示的开头添加0

 

  *符号扩展:在表示中添加最高有效位值的副本

 

  *无符号数的截断结果/补码数字的截断结果

 

3.整数运算

 

  *无符号加法/补码运算

 

4.浮点数

 

  *从二进制小数理解浮点数

 

  *IEEE浮点格式标准:P70

 

  *根据exp值,被编码的值可以分为三种情况

 

  *舍入的关键问题是在两个可能值的中间确定舍入方向

 

  *浮点运算

 

二.重点知识点理解(实验楼要求)

 

1.无符号数、有符号数(2进制补码)、浮点数,从逆向角度考虑为什么会产生漏洞?

 

  任何漏洞产生都必然因为系统不可更改的局限性/无符号数、有符号数、浮点数的局限性/无符号数或者有符号数的表示范围有限,而浮点数虽然编码范围大,但是不精确

 

2.gcc -m32 可以在64位机上生成32位的代码

 

3.在C语言中,所有以0X或者0x开头的数字常量都常被认为是十六进制的值

 

4.字节顺序的两种表示方法:小端是“高对高、低对低”,大端与之相反

 

5.代码执行一下

 

 

 

6.文本数据比二进制数据具有更好的平台适应性。

 

7.将有符号数强转成无符号数之后,数字的数值发生改变,然而其位表示不变。

 

8.怎么样让负数等于正数?

 

  在负数x后加上U,可以使其转换为(2^w+x)

 

9.零扩展类似于逻辑左(右)移

 

  将一个无符号数转换为一个更大的数据类型,简单地在前面加上0。符号扩展类似于算数左(右)移。即:将一个补码数字转换为一个更大的数据类型,在表示中添加最高有效位值得副本。

 

10.整数与浮点数表示同一个数字的关系

 

  整数与浮点数表示同一个数字时,化成二进制形式之后,可以看到,整数等于1 的最高有效位之后的数字,与浮点数小数部分的高位是相匹配的。

 

11.整数与浮点数转换规则

 

  整数转换成二进制表示,然后小数点左移若干位得到规格化表示;取出小数部分的数值,在后面补0使其达到23位; 用frac加上偏置量得到的结果用二进制表示,放在取出的部分前面,再加上一个符号位即可。

 

二.第四章知识点

 

1.程序编码与机器级代码

 

  程序编码:

 

       gcc编译器,将源代码转化成可执行代码,C预处理器-汇编器-链接器

 

  机器级代码:

 

       机器级程序的格式和行为,定义【指令集体系结构ISA】,定义了处理器状态,指令格式,以及指令对状态的影响

 

       机器级程序实用的存储地址使用的是虚拟地址

 

 

2.数据格式

 

  整数型、长整数型存储为4字节格式

 

  指针类型存储为4字节格式

 

  浮点数有三种形式:单精度、双精度、扩展精度,分别为4字节、8字节、10字节

 

3.操作数指示符:

 

  第一种是立即数,即常数值

 

  第二种是寄存器,表示某个寄存器的内容

 

  第三种是存储器,根据计算出的有效地址,访问存储器位置

 

4.操作数格式见课本P113【注意s因子必须是1、2、4或8】

 

5.数据传送指令:把不同指令分为指令类,同一类指令执行相同操作【不同的是操作数大小不同】

 

6.MOV类中的指令源操作数的值复制到目的操作数中【源操作数的指定的值是一个立即数,目的操作数指定一个位置】

 

7.栈是一个数据结构,可以添加或删除值,遵循后进先出原则。

 

8.加载有效地址【leal】:从存储器读数据到寄存器。

 

9.一元操作与二元操作

 

  一元操作:只有一个操作数,既是源又是目的

 

  二元操作:其中的第二个操作数既是元又是目的

 

10.移位操作:先给移位量,再给移位值,可以进行算术和逻辑右移。

 

11.条件码:寄存器,描述最近的算术或逻辑操作的属性。

 

  最常用的条件码:CF【进位标志】,ZF【零标志】,SF【符号标志】,OF 【溢出标志】

 

12.注意:CMP指令和TEST指令不会修改任何寄存器的值,只设置条件码。

 

13.访问条件码:常使用三种方法P125

 

14.三种循环【do-while】【while】【for】

 

15.一个过程包括将数据和控制从代码的一部分传到另一部分,在进入时为过程的局部变量分配空间,并在退出时释放空间。

 

16.栈帧结构:为单个过程分配的那部分栈称为【栈帧】

 

  程序执行时,栈指针可以移动,大多数信息访问都是针对于帧指针的

 

17.转移控制:call指令、leave指令、ret指令P150

 

18.递归过程P156.程序编码与机器级代码

 

  程序编码:

 

       gcc编译器,将源代码转化成可执行代码,C预处理器-汇编器-链接器

 

  机器级代码:

 

       机器级程序的格式和行为,定义【指令集体系结构ISA】,定义了处理器状态,指令格式,以及指令对状态的影响

 

       机器级程序实用的存储地址使用的是虚拟地址

 

2.数据格式

 

  整数型、长整数型存储为4字节格式

 

  指针类型存储为4字节格式

 

  浮点数有三种形式:单精度、双精度、扩展精度,分别为4字节、8字节、10字节

 

3.操作数指示符:

 

  第一种是立即数,即常数值

 

  第二种是寄存器,表示某个寄存器的内容

 

  第三种是存储器,根据计算出的有效地址,访问存储器位置

 

4.操作数格式见课本P113【注意s因子必须是1、2、4或8】

 

5.数据传送指令:把不同指令分为指令类,同一类指令执行相同操作【不同的是操作数大小不同】

 

6.MOV类中的指令源操作数的值复制到目的操作数中【源操作数的指定的值是一个立即数,目的操作数指定一个位置】

 

7.栈是一个数据结构,可以添加或删除值,遵循后进先出原则。

 

8.加载有效地址【leal】:从存储器读数据到寄存器。

 

9.一元操作与二元操作

 

  一元操作:只有一个操作数,既是源又是目的

 

  二元操作:其中的第二个操作数既是元又是目的

 

10.移位操作:先给移位量,再给移位值,可以进行算术和逻辑右移。

 

11.条件码:寄存器,描述最近的算术或逻辑操作的属性。

 

  最常用的条件码:CF【进位标志】,ZF【零标志】,SF【符号标志】,OF 【溢出标志】

 

12.注意:CMP指令和TEST指令不会修改任何寄存器的值,只设置条件码。

 

13.访问条件码:常使用三种方法P125

 

14.三种循环【do-while】【while】【for】

 

15.一个过程包括将数据和控制从代码的一部分传到另一部分,在进入时为过程的局部变量分配空间,并在退出时释放空间。

 

16.栈帧结构:为单个过程分配的那部分栈称为【栈帧】

 

  程序执行时,栈指针可以移动,大多数信息访问都是针对于帧指针的

 

17.转移控制:call指令、leave指令、ret指令P150

 

18.递归过程P156

posted @ 2015-11-01 21:13  5219hsw  阅读(147)  评论(1编辑  收藏  举报