20165305 苏振龙《信息安全系统设计基础》第一周学习总结

第一章:计算机系统漫游

一、信息=二进制(位串)+上下文

二、C语言代码转汇编代码命令:gcc -S hello.i -o hello.s

三、源程序翻译过程:源程序文本 → 预处理器(预处理) → 编译器(编译) → 汇编器(汇编) → 链接器(链接) → 可执行目标程序(二进制)

四、了解编译系统工作原理的益处:

1、优化程序性能

2、理解链接时出现的错误

3、避免安全漏洞

五、系统的硬件组成

1、总线:传送定长字节块。字中的字节数(即字长)是一个基本的系统参数,各个系统中都不尽相同。

2、I/O设备:是系统与外部世界的联系通道。每个I/O 设备都通过一个控制器或适配器与I/O 总线相连。

3、主存:主存是一个临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据。存储器是一个线性的字节数组,每个字节都有其唯一的地址。

4、处理器(CPU):中央处理单元。具有加载、存储、操作、跳转过程。

六、存储设备形成层次结构:主要思想是上一层的存储结构作为低一层存储器的高速缓存。

第七章:链接

1.链接相当于一个整合,将各部分整合成一个单一的可执行的文件的过程。
2.为了构造可执行任务,链接器必须完成两个任务: 符号解析、重定位
3.目标文件的三种形式:
(目标文件就是字节块的集合)
可重定位目标文件;
可执行目标文件;
共享目标文件。
4.符号和符号表
由m定义的可被其他模块引用的全局符号;
其他模块定义的可被m模块引用的全局符号(外部符号);
只被m模块定义与引用的本地符号。
常用命令:
预处理:gcc -E -I hello.c -o hello.i
编译:gcc -S -I hello.i -o hello.s
汇编: gcc -c -I hello.s -o hello.o
链接:gcc hello.o -o hello

Myod任务详情

1 复习c文件处理内容

2 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能

  1. main与其他分开,制作静态库和动态库

  2. 编写Makefile

5 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息

6 在博客园发表一篇博客,重点写遇到的问题和解决过程

遇到的问题:不会编写Makefile文件,所以我问了一些同学再加上自己的理解才算做出来。

源代码:

#include<stdio.h>
#define N 100  //数组最大长度

main()
{
    int a[N];

char b;
int s;
for(s=0;s<N;s++)
    {
    scanf("%d%c",&a[s],&b); //输入数字和符号
    if(b=='#')   //输入时“#”结束
    break;
    }
    insertsort(a,s);  //函数调用
    return 0;
}

void insertsort(int a[],int n)
{
   int i=0,temp=0,j=0;
   if(n>9){            //数组最小长度
     for(i=1;i<=n;i++)  //实现插入排序
     {
        temp=a[i];     //将要插入的数据保存到temp中
        for(j=i-1;a[j]>temp;j--) 
            a[j+1]=a[j];   //数据后移
           a[j+1]=temp;   //插入
     }
   }

   for(i=0;i<=n;i++)
    {
      printf("%d ",a[i]);
    }
}

测试1-vi

  1. 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号

  2. 用Vi输入图中代码,并用gcc编译通过

  3. 在Vi中使用K查找printf的帮助文档

  4. 提交vi编辑过程截图,要全屏,包含自己的学号信息

测试2-gcc测试

  1. 用gcc 进行预处理,编译,汇编,链接vi输入的代码

  2. 生成的可执行文件中要有自己的学号

  3. 提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息

测试3-gdb测试

  1. 用gcc -g编译vi输入的代码

  2. 在main函数中设置一个行断点(2,3一张图)

  3. 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点

  4. 提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息

测试4-静态库的测试

  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
  2. 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息

测试5-共享库

  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
  2. 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息

测试6-Makefile

1 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.

2 提交Make过程截图,要全屏,包含自己的学号信息


posted @ 2018-09-23 22:53  20165305  阅读(493)  评论(0编辑  收藏  举报