信息安全系统设计基础期中学习总结
重难点知识梳理:
课本大章
第一章 计算机系统漫游
信息=位+上下文
第二章 信息的表示和处理
第二章整体即为进制转换,对于无符号数与有符号数之间的转换,以及OP操作,本质而言为模运算。
第三章 程序的机器级表示
汇编中循环的实现:
1.do-while循环
通用形式:
do
body-statement
while
(
test-expr);
循环体body-statement至少执行一次。
可以翻译成:
loop:
body-statement
t = test-expr;
if
(t)
goto
loop
;
即先执行循环体语句,再执行判断。
2.while循环
通用形式:
while(
test-expr)
body-statement
GCC的方法是,使用条件分支,表示省略循环体的第一次执行:
if(
!
test-expr
)
goto
done;
do
body-statement
while
(
test-expr);
done:
接下来:
t =
test-expr;
if(!t)
goto
done:
loop
:
body-statement
t =
test-expr;
if
(t)
goto loop;
done:
归根究底,还是要把循环改成do-while的样子,然后用goto翻译。
栈的操作:
对于一个栈首先进行栈的建立:push %ebp; mov %esp,%ebp
然后进行大小进行申请:sub $xx,%esp ,紧接着进行数据的存储
当进行调用时保存返回地址,即下一条指令的地址,调用call指令
即一个函数的栈帧。整体而言与c语言中函数的调用极其相似。
第四章 处理器体系结构
第四章整体总结见难点梳理。
第六章存储器层次结构
局部性原理:
- 时间局部性
- 空间局部性
存储器层次结构:每层存储设备都是下一层的“缓存”。
缓存不命中的种类
(1)强制性不命中/冷不命中
即第k层的缓存是空的(称为冷缓存),对任何数据对象的访问都不会命中。
(2)冲突不命中
由于一个放置策略:将第k+1层的某个块限制放置在第k层块的一个小的子集中,这就会导致缓存没有满,但是那个对应的块满了,就会不命中。
(3)容量不命中
当工作集的大小超过缓存的大小时,缓存会经历容量不命中,就是说缓存太小了,不能处理这个工作集。
高速缓存存储器:
高速缓存是一个高速缓存组的数组,它的结构可以用元组(S,E,B,m)来描述:
S
:这个数组中有
S=2^s
个高速缓存组
E:每个组包含
E个高速缓存行
B
:每个行是由一个
B=2^b
字节的数据块组成的
m:每个存储器地址有
m位,形成
M=2^
m个不同的地址
除此之外还有标记位和有效位:
有效位:每个行有一个有效位,指明这个行是否包含有意义的信息
标记位:
t=
m-(b+s)个,唯一的标识存储在这个高速缓存行中的块
组索引位:
s
块偏移位:
b
总结:
对于这门课程来说,我觉得知识点的联系非常重要。每学完一个章节,要进行一下复习,善于总结每个章节之间的联系,有助于我们更好地理解和学习这门课程。比如第三章和第四章,对于函数栈桢的每条指令,我们联系一下4.3节,各个指令的具体作用,有助于我们更好的理解%esp,%ebp的具体操作,使我们更好的理解栈桢的使用。