20145330 第2周《信息安全系统设计基础》

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-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
  • 优化选项

    • 通过“-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中的命令

系统的硬件组成

  • 总线
    • 贯穿整个系统的是一组电子管道,称作总线
    • 通常总线被设计成传送定长的字节块,也就是字
  • 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
原文地址:https://www.cnblogs.com/20145330swx/p/5907318.html