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

Wesley13
• 阅读 651

第一章:计算机系统漫游

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

二、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 在博客园发表一篇博客,重点写遇到的问题和解决过程 20165305 苏振龙《信息安全系统设计基础》第一周学习总结 20165305 苏振龙《信息安全系统设计基础》第一周学习总结

遇到的问题:不会编写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编译通过 20165305 苏振龙《信息安全系统设计基础》第一周学习总结

  3. 在Vi中使用K查找printf的帮助文档 20165305 苏振龙《信息安全系统设计基础》第一周学习总结

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

测试2-gcc测试

  1. 用gcc 进行预处理,编译,汇编,链接vi输入的代码 20165305 苏振龙《信息安全系统设计基础》第一周学习总结 20165305 苏振龙《信息安全系统设计基础》第一周学习总结

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

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

测试3-gdb测试

  1. 用gcc -g编译vi输入的代码 20165305 苏振龙《信息安全系统设计基础》第一周学习总结

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

  3. 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点 20165305 苏振龙《信息安全系统设计基础》第一周学习总结

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

测试4-静态库的测试

  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
  2. 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息 20165305 苏振龙《信息安全系统设计基础》第一周学习总结 20165305 苏振龙《信息安全系统设计基础》第一周学习总结

测试5-共享库

  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
  2. 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息 20165305 苏振龙《信息安全系统设计基础》第一周学习总结 20165305 苏振龙《信息安全系统设计基础》第一周学习总结

测试6-Makefile

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

2 提交Make过程截图,要全屏,包含自己的学号信息 20165305 苏振龙《信息安全系统设计基础》第一周学习总结 20165305 苏振龙《信息安全系统设计基础》第一周学习总结 20165305 苏振龙《信息安全系统设计基础》第一周学习总结

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
小万哥 小万哥
7个月前
掌握 C++ 编译过程:面试中常见问题解析
C编译过程C是一种高级编程语言,但是计算机并不能直接理解它。因此,需要将C代码翻译成计算机可以理解的机器语言。这个过程就是编译过程,是C程序从源代码到可执行文件的转换过程,包括预处理、编译、汇编和链接四个阶段。1.预处理在编译器开始编译之前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
C++ 编译过程简介
C/C程序编译流程:预处理编译汇编链接具体的就是:源代码(sourcecoprede)→预处理器(processor)→编译器(compiler)→汇编程序(assembler)→目标程序(objectcode)→链接器(Linker)→可执行程序(executables)C语言在linux下的基本流程如图:!wK
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这