20145337马月

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

教材学习内容总结

第一章

  • 源程序实际上就是由0,1组成的位序列。信息(磁盘文件、存储器中程序、用户数据)根据上下文有不同解释方式。
  • 程序被其他程序翻译成不同形式,开始为ASCⅡ文本,然后被编译器和链接器翻译成二进制可执行文件。GCC编译的四个步骤:预处理(gcc -E)、编译(gcc -S)、汇编(gcc -c)、链接, gcc 选项可以简记为“ESc”,相应的产出文件的后缀可以简记为“iso”
  • 系统硬件由总线、I/O设备、主存、处理器,其中CPU可执行加载、存储、操作、跳转
  • 系统中的存储设备层次结构划分——CPU寄存器在顶部、多层高速缓存存储器、DRAM主存和磁盘存储器。层次结构中较高层次存储设备可作为较低层次设备的高速缓存。
  • 文件是对I/O的抽象、虚拟存储器是对程序存储器的抽象、进程是对正在运行的程序的抽象、虚拟机是计算机的抽象。

第七章

  • 链接是将各种代码和数据部分收集起来并组合成单一文件的过程,由链接器的程序自动执行。
  • 链接器完成的两个任务:符号解析及重定位
  • 目标文件的三种形式:可重定位目标文件、可执行目标文件及共享目标文件
  • 编译器向汇编器输出符号时,分强符号和弱符号。函数和已经初始化的全局变量是强符号,未初始化的全局变量是弱符号。
  • 处理多重符号规则:1.不允许有多个强符号;2.如果有一个强符号和多个弱符号,选择强符号;3.如果有多个弱符号,任意选择一个;
  • 处理目标文件的工具:AR、STRINGS、STRIP、NM等

VIM

  • 保存改动过的文件并退出:<Esc>:wq<enter>
  • 放弃所有改动退出:<Esc>:q!<enter>
  • 欲从当前光标删除至下一个单词:dw
  • 欲从当前光标删除至当前行末尾:ds
  • 删除整行:dd
  • 欲撤销以前的操作:u
  • 欲撤销在一行中所做的改动:U
  • 普通模式中使用y复制
  • 普通模式中,yy复制游标所在的整行(3yy表示复制3行)
  • 普通模式中,y^ 复制至行首,或y0。不含光标所在处字符。
  • 普通模式中,y$ 复制至行尾。含光所在处字符。
  • 普通模式中,yw 复制一个单词。
  • 普通模式中,y2w 复制两个单词。
  • 普通模式中,yG 复制至文本末。
  • 普通模式中,y1G 复制至文本开头。

GCC

  • GCC编译过程分为:
  • 预处理:gcc –E hello.c –o hello.i;gcc –E调用cpp;
  • 编 译:gcc –S hello.i –o hello.s;gcc –S调用ccl;
  • 汇 编:gcc –c hello.s –o hello.o;gcc -c 调用as;
  • 链 接:gcc hello.o –o hello ;gcc -o 调用ld

GDB

  • 程序的运行状态有“运行”、“暂停”、“停止“三种。
  • 主要操作:
  • 查看文件:l
  • 设置断点:在b后加入相对应的行号。例b 6
  • 查看断点情况:设置完断点后键入info b,在gdb中可以设置多个断点。
  • bt查询调用函数的情况
  • 运行代码:默认从首行开始运行代码,键入r;r+行号:从该行号开始运行
  • 查看变量值:p变量。例:p n
  • 单步运行:n或s,s会进入函数,n不会进入函数
  • 恢复程序运行:c
  • 帮助信息:h

makefile

  • makefile文件编写规则:
  • 目标文件:由make创建,通常是目标文件或可执行文件
  • 依赖文件:创建目标体所依赖的文件
  • 运行命令:创建每个目标体时需要的运行命令,必须以tab键开头
  • 格式为:目标文件:依赖文件列表 [tab键]各目标体运行命令(注意不是空格)
  • 使用make的格式:make 目标文件
  • makefile变量的定义:
  • 递归展开方式:在引用该变量时进行替换(不能用于引用自己的情况),
  • 缺点:不能在变量后追加内容
  • 格式定义:VAR = var
  • 展开方式:在定义处展开,并只展开一次。优点:消除变量的嵌套引用
  • 格式定义:VAR := var
  • make中变量的使用格式: $(变量名)
  • 变量名的命名:不包括“:”、“#”、“=”以及结尾空格的任何字符串;变量名大小写不敏感

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

课后作业




本周代码托管截图

从实验楼下载的代码没有托管成功

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

因为始终没有装上虚拟机,自己重装好几次包括别的同学的都不成功,使用实验楼做实验就导致git不方便。此外,对7章有个别章节不是很理解,会赶上大家的进度。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38

参考资料

posted on 2016-09-25 20:37  20145337马月  阅读(200)  评论(2编辑  收藏  举报