2017-2018-1 20155320 《信息安全系统设计基础》第五周学习总结

2017-2018-1 20155320 《信息安全系统设计基础》第五周学习总结

《信息安全系统设计基础》第3周学习总结
参考老师提供的教材内容导读

教材学习内容总结

  • Intel处理器系列俗称X86,寻址方式经历三代:

1 DOS时代的平坦模式,不区分用户空间和内核空间,很不安全

2 8086的分段模式

3 IA32的带保护模式的平坦模式

  • gcc -S xxx.c 就能看到C语言编译产生的汇编代码

gcc -c hello.c 会编译并汇编该代码

64位机器上想要得到32代码:gcc -m32 -S xxx.c

objdump -d xxx 反汇编

  • Intel 用术语“字”表示16位数据类型,32位称为双字。
  • 二进制文件可以用od 命令查看,也可以用gdb的x命令查看。
    有些输出内容过多,我们可以使用 more或less命令结合管道查看,也可以使用输出重定向来查看
    od code.o | more
    od code.o > code.txt

  • 了解Linux和Windows的汇编格式有点区别:ATT格式和Intel格式
  1. Intel代码省略了指示大小的后缀。我们看到指令push和mov,而不是pushq和movq
  2. Intel代码省略了寄存器名字前面的‘%’符号,用的是rbx,而不是%rbx。
  3. Intel代码用不同的方式来描述内存中的位置,例如是‘QWORD PTR[rbx]’而不是‘(%rbx)’
  4. 在带有多个操作数的指令情况下,列出操作数的顺序相反。
  • 大多数GCC生成的汇编代码指令都有一个字符后缀,表明操作数的大小。数据传送指令有四个变种:movb(传送字节),movw(传送字)、movl(传送的双字)、movq(传送四字)。

  • 寄存器要深入理解,esi edi可以用来操纵数组,esp ebp用来操纵栈帧。

1.8086系统中:8个16位寄存器,从%ax到%bp

2.IA32架构:8个32位寄存器,从%eax到%ebp.

3.x86-64:原来的8个扩展到64位,标号从%rax到%rbp,还新增了8个新寄存器,从%r8到%r15

  • 操作数分为三种类型:立即数、寄存器、存储器

  • 有效地址的计算方式为: Imm(Eb,Ei,s) = Imm + R[Eb] + R[Ei]*s

  • MOV相当于C语言的赋值”=“,注意ATT格式中的方向, 另外注意不能从内存地址直接MOV到另一个内存地址,要用寄存器中转一下

  • 栈通过push把数据压入栈中,通过pop操作删除数据,它具有一个属性:弹出的值永远是被压入而且仍在栈中的值。栈顶元素的地址是所有栈中元素地址中最低的。栈指针%rsp保存着栈顶元素的地址。

  • 加载有效地址的指令leaq,虽然形式是从内存读数据到寄存器,但实际上他根本没有引用内存,而是将有效地址写入到目的操作数。
  • call/ret; 函数返回值存在%eax中

教材学习中的问题和解决过程

  • 问题1:能区分MOV,MOVS,MOVZ

  • 问题1解决方案:通过查找资料,在一篇博客中找到了答案

    1.MOV相当于C语言的赋值”=“

    2.MOVS将作了符号扩展的字节传送到字

    3.MOVZ将作了零扩展的字节传送到字

代码调试中的问题和解决过程

  • 问题1:在课本P116页的练习时,出现了如下错误

  • 问题1解决方案:发现是有一个~没有删除,修改后结果为

代码托管

结对及互评

本周结对学习情况

  • 20155326
    • 结对照片

    • 结对学习内容

      • 第三章内容

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

本周学习内容比较多,让我感觉压力比较大。第三章的内容和上学期上的汇编课程相关联比较多,融会贯通的学感觉效果更好。同时仍感觉自己的学习效率不高,需要提升。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 200小时
第一周 5/5 1/1 15/15
第二周 1/2 23/38
第三周 206/327 1/3 28/66
第四周 206/327 1/4 10/77
第五周 285/568 1/5 20/97 主要学习了汇编及反汇编的相关知识

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

参考资料

原文地址:https://www.cnblogs.com/ljq1997/p/7710536.html