20145330 第2周《信息安全系统设计基础》
教材学习内容总结##
Linux下C语言开发基础
-
熟悉vi的基本操作
-
vim是一个非常好的文本编辑器
-
通过vim大冒险学习VIM
-
输入vimtutor,跟着教程练习
-
-
启动vim后,vim在Normal模式下,进入insert模式请按i(形式和记事本一样),想返回Normal模式,按ESC键
-
利用vim来编写hello.c文件
- GUN环境包括EMACS编辑器、GCC编译器、GDB调试器、汇编器连接器、处理二进制文件的工具以及其他一些部件。
gcc
-
gcc能够编译用c、c++等语言编译的程序
-
gcc优点
- Linux下的默认使用的c语言编译器是gcc
- 便于控制编译过程
- 与gdb调试工具结合使用
- gcc提供灵活强大的代码优化功能
- 提供警告信息和扩展
-
gcc的交叉编译平台
-
编译格式
- gcc[选项]要编译的文件[选项] [目标文件]
- gcc[选项]要编译的文件[选项] [目标文件]
-
常用选项
-
可以把编译过程分成四步
- 预处理:gcc-E hello.c--o hello.i;gcc-E调用cpp
- .i预处理后的C文件
- 编译:gcc-S hello.i--o hello.s;gcc-S调用ccl
- .s汇编语言程序
- 汇编:gcc-c hello.s--o hello.o;gcc -c 调用as
- .o目标文件程序
- 链接:gcc hello.o--o hello;gcc -o调用ld
- 预处理:gcc-E hello.c--o hello.i;gcc-E调用cpp
-
优化选项
- 通过“-On”来
控制优化配置,其中n是一个代表优化级别整数,n值越大优化效果越好
-
目录选项
- “-I 目录”选项表示在头文件搜索路径中添加需要的目录
- “-L 目录”的功能是在库文件的搜索路径中添加用户定义的搜索的目录名
-
gcc编译性能分析
- 程序性能测试工具gprof
- gprof[选项]用户应用程序gmon.out
-
将之前的代码用gcc进行编译
-
编译通过后即可把hello文件运行出来
-
编写四组运算代码
-
将代码链接到main中
-
完成
gdb
- gdb是GNU开源组织发布的一个强大的UNIX下调试程序工具
- 一般来说,主要完成四方面功能
- 启动程序,按照自定义随心所欲的运行程序
- 可以让调试程序在你所指定的位置的断点处停止
- 当程序停止时,可以检查此时你程序中所发生的事情
- 动态的改变你程序的执行环境
makefile工程管理器
- 管理含有多个文件的工程工具
- makefile文件有编译、连接的规则和语法,也有自己的书写格式、关键字、函数以及语法结构
- Make工作时其工作过程通常如下
- 读取Makefile
- 根据执行选项,查找当前的目录或者其他目录的Makefile
- 初始化Makefile
- 将制定的Makefile中的变量进行替换,如果该Makefile中包含其他的文件,则将其加载
- 解释规则
- 将Makefile中的执行规则进行解析,为创建目标建立关系链
- 分析变更
- 执行
- 执行Makefile中的命令
- 读取Makefile
系统的硬件组成
- 总线
- 贯穿整个系统的是一组电子管道,称作总线
- 通常总线被设计成传送定长的字节块,也就是字
- I/O设备
- 输入/输出设备是系统与外部世界的联系通道
- 每个I/O设备都通过一个控制器或适配器与I/O总线相连,他们的功能都是在I/O总线和设备之间传递信息
- 主存
- 主存是一个临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据。
- 处理器
- 中央处理单元(CPU),简称处理器,是执行存储在主存中指令的引擎
- CPU在指令的要求下可能会执行以下操作
- 加载
- 存储
- 操作
- 跳转
信息的表示和处理
- 研究三种最重要的数字表示
- 无符号
- 编码基于传统的二进制表示法,表示大于或等于零的数字
- 补码
- 编码是表示有符号整数的最常见的方式,就是可以为正或为负的数字
- 浮点数
- 编码是表示实数的科学记数法的以二为基数的版本
- 无符号
代码调试中的问题和解决过程
- 在启动gdb环境中,并没有讲解中的代码调试功能,gdb test启动GDB后,输入一行代码按回车后总是有“没有符号被读取”
代码托管
心得体会与总结
- 这周的博客学习内容量较为大,基本上每天都有在看一点,但还是很很吃力,感觉书上的内容和实验楼与视频的不太好同步看,刚开始学习时是很没有头绪的,不知道应该先看哪个,感觉资料一多反而无从下手,只能自己慢慢缕慢慢看,希望可以快点进入学习效率高点的状态
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/00 | 2/2 | 20/20 | |
第二周 | 200/200 | 2/4 | 18/38 |