您的位置:首页 > 其它

20145327 《信息安全系统设计基础》第五周学习总结

2016-10-16 19:36 190 查看

20145327 《信息安全系统设计基础》第五周学习总结

教材学习内容总结

程序编码

编译代码:gcc =O1 -o p p1.c p2.c

实际上gcc命令调用了一系列程序,将源代码转化成可执行代码。

机器级代码

指令集体系结构ISA:定义了处理器状态、指令的格式,每条指令对状态的影响。

数据格式

char b-字节

short w-字

int l-双字

数据传送指令:

MOV S,D

movb 传送字节

movw 传送字

movl 传送双字

(上述gcc生成的汇编代码指令都有一个字符后缀,表明操作数的大小)

加载有效地址:实际是将有效地址写入目的操作数,目的操作数必须是寄存器。

一元操作:只有一个操作数,可以是寄存器也可是存储器位置。

INC 加1

DEC 减1

NEG 取负

NOT 取补

二元操作:源操作数是第一个,可以是立即数、寄存器、存储器 目的操作数是第二个,可以是寄存器、存储器 两个不能同时为存储器。

ADD 加

SUB 减

IMUL 乘

XOR 异或

OR 或

AND 与

使用规则: 第二个操作数 操作符 第一个操作数

移位:了解源操作数和目的操作数

SAL 左移

SHL 左移(等同于SAL)

SAR 算术右移

SHR 逻辑右移

源操作数:移位量——立即数或CL

目的操作数:要移位的数值——寄存器或存储器

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:

than

t = test-expr;

if(!t)

goto done:

loop:

body-statement

t = test-expr;

if(t)

goto loop;

done:

switch语句

switch语句可以根据一个整数索引值进行多重分支。处理具有多种可能结果的测试时,这种语句特别有用。它们不仅提高了代码的可读性,而且使用跳转表这个数据结构使用实现更加高效。跳转表是一个数组,表项i是一个代码段的地址,这个代码段实现当switch索引值等于i时程序应该执行的动作。程序代码用于索引值来执行一个跳转表内的数组引用,确定跳转指令的目标。和使用一组很长的

if-else相比,使用跳转表的优点是执行switch语句的时间与switch的case数量无关。GCC根据switch语句中case的数量和case中值的稀少程序来翻译开关语句。当case数据比较多(例如4个以上),并且值的范围跨度比较小时,就会使用跳转表。

1.寄存器的使用

调用者——%eax、%edx、%ecx

被调用者——%ebx%esi%edi

寄存器%ebp-帧指针

寄存器%esp-栈指针

数据传送指令:

move指令:将源操作符的值复制到目的操作数中。源操作数指定的值是一个立即数,存储在寄存器中或者存储器中。目的操作数指定一个位置,要么是一个寄存器,要么是一个存储器地址。。传送指令的链各个操作数不能都指向存储器位置。这些指令的寄存器操作数,对于movl来说,可以是8个32位寄存器(%eax~%ebp),对于movw来说,可以是8个16位寄存器(%ax~%bp),movb可以使单字节寄存器元素(%ah~%bh,%al~%bl)。

汇编中可以用条件测试和跳转组合起来实现循环的效果,但是大多数汇编器中都要先将其他形式的循环转换成do-while格式。

课后作业中的问题和解决过程







本周代码托管截图

代码托管

其他(感悟、思考等,可选)

感觉汇编挺有趣神奇的

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周100/1002/210/10
第二周100/2001/320/30
第三周80/2801/415/45
第五周100/3801/515/60

参考资料

《深入理解计算机系统V2》学习指导
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: