2017-2018-1 20155213 《信息安全系统设计基础》第五周学习总结
2017-10-22 23:01
645 查看
2017-2018-1 20155213 《信息安全系统设计基础》第五周学习总结
教材学习内容总结
浏览了正章,重点学习了以下几个点
switch语句:可以根据一个整数索引值进行多重分支;其中主要使用的是跳转表这个数据结构,这里就是if...else if...有所区别了,if的话就只是一个jump,而这里的switch则使用了一个跳转表数据结构作为实现基础,下面是一段switch代码,以及其汇编代码:可以看见在.rodata(read Only Data)标示下,的汇编代码就存在着跳转表信息
逆向工程:逆向工程(又称逆向技术),是一种产品设计技术再现过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能特性及技术规格等设计要素,以制作出功能相近,但又不完全一样的产品。逆向工程源于商业及军事领域中的硬件分析。其主要目的是在不能轻易获得必要的生产信息的情况下,直接从成品分析,推导出产品的设计原理摘自百度百科。
这里我们可以同过反汇编,来查看程序的原理,理清楚它的脉络,但这毋庸置疑,需要很好的渗透技术,以及足够的耐心。当然工欲善其事必先利其器,python是一个不错的选择,但这里先从C语言基础上的计算机系统了解一点简单的逆向工程原理
递归调用:从下面的截图出来的汇编代码可以看出来,递归调用一个函数,其实和调用其他函数是一样的,这是栈规则决定的。
long rfact(long n) { long res; if(n<=1) res=1; else res=n*rfact(n-1); return res; }
教材学习中的问题和解决过程
问题1:P181,题3.40根据汇编代码优化出原始C程序:void fix_set_diag(fix_matrix A,int Val) { long i; for(i=0;i<N;i++) A[i][i]=Val; }
fix_set_diag: void fix_set_diag(fix_matrix A,int Val) A in %rdi,Val in %rsi movl $0,%eax .L13: movl %sei,(%rdi,%rax) addq $68,%rax cmpq $1088,%rax jne .L13 rep;ret
问题1解决方案:阅读上面简单的汇编程序,当一-O1优化等级编译时,下面的代码与之相似:
void fix_set_diag(fix_matrix A,int Val) { int *Abase=&A[0][0]; long i=0; long iend=N*(N+1); do{ Abase[i]=Val; i+=(N+1); }while(i!=iend) }
代码调试中的问题和解决过程
问题1:段错误,核心已转储,我在写mybash测试代码的时候,老是出现这样的错误问题1解决方案:我百度了原因,上面说的是内存错误,分别有以下几类:
访问不存在的内存地址;
访问系统保护的内存地址;
访问只读的内存地址;
空指针废弃;
堆栈溢出;
内存越界(数组越界,变量类型不一致等);
之后通过gdb调试知道了问题具体出在哪,是test的数组问题;
char **test[10]; test[0][0]="ls"; test[0][1]="-l"; test[0][2]=0;
将
**test[10]改成10个*test[10]就好了
代码托管
结对及互评
结对队友20155303其他(感悟、思考等,可选)
这周就是重温了一遍汇编,但其实不算是重温,因为之前感觉就好像根本没学一样,今后还是要学一点专一点的才好,不然总会在后面的学习过程中出现各种阻力。学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 15篇 | 400小时 | |
第一周 | 177/177 | 1/1 | 10/10 | |
第三周 | 308/485 | 2/2 | 12/22 | |
第五周 | 277/762 | 2/4 | 10/32 |
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
参考:软件工程软件的估计为什么这么难,软件工程 估计方法
计划学习时间:XX小时
实际学习时间:XX小时
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
参考资料
《深入理解计算机系统V3》学习指导...
相关文章推荐
- 2017-2018-1 20155213 《信息安全系统设计基础》第三周学习总结
- 2017-2018-1 20155230 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155203 《信息安全系统设计基础》第五周学习总结
- 2017-2018-20155206 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155213 《信息安全系统设计基础》第七周学习总结
- 2017-2018-1 20155213 《信息安全系统设计基础》第九周学习总结
- 2017-2018-1 20155216 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155310 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155317 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155303 《信息安全系统设计基础》第五周学习总结
- 2017-2018-5 0155327 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155213陆忠民 《信息安全系统设计基础》第一周学习总结
- 2017-2018-1 20155217 《信息安全系统设计基础》第五周学习总结
- 20155325 2017-2018-1 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155320 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155333 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155234《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155304 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155229 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155233 《信息安全系统设计基础》第五周学习总结