2017-2018-1 20155215 《信息安全系统设计基础》第1周学习总结

2017-2018-1 学号 《信息安全系统设计基础》第1周学习总结

教材学习内容总结

第一章:

  • 信息就是位串(二进制)+上下文
  • hello.c->hello.i->hello.s->hello.o(预处理,编译,汇编,链接)
  • 主要都是一些基本的计算机系统知识,包括系统结构,并行,运行等等。

第七章:

  • 编译器驱动器程序
  • 调动GCC驱动程序,
gcc -02 -g -o -p main.c swap.c

/*
 main.c
*/



void swap();

int buf[2]={1,2};

int main()
{
   swap();
   return 0;

}

extern int buf[];

int *bufp0 = &buf[0];
int *bufp1;

void swap()
{

   int temp;

   bufp1 = &buf[1];
   temp = *bufp0;
   *bufp0 = *bufp1;
   *bufp1 = temp;

}

  • 链接器必须完成两个主要任务,符合解析,重定位。
  • 编译器和汇编器生成重定位汇编文件(包括共享目标文件),链接器生成可执行目标文件。
  • 符号和符号表:认识到本地链接器符号和本地程序变量的不同是很重要。.symtab中的符号表不包含对应于本地非静态变量的任何符号。

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

  • 问题1:静态链接和动态链接的区别是什么
  • 问题1解决方案:我在网上查了一下,得到下面这些说法:

动态链接库(Dynamic Linked Library):
Windows为应用程序提供了丰富的函数调用,这些函数调用都包含在动态链接库中。其中有3个最重要的DLL,Kernel32.dll,它包含用于管理内存、进程和线程的各个函数;
User32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数;GDI32.dll,它包含用于画图和显示文本的各个函数。

静态库(Static Library):
函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其它模块
组合起来创建最终的可执行文件(.EXE文件)。

导入库(Import Library):
在使用动态链接库的时候,往往提供两个文件:一个引入库和一个DLL。引入库包含被DLL导出的函数和变量的符号名,DLL包含实际的函数和数据。在编译链接可执行文件时,只需
要链接引入库,DLL中的函数代码和数据并不复制到可执行文件中,在运行的时候,再去加载DLL,访问DLL中导出的函数。
在运行Windows程序时,它通过一个被称作“动态链接”的进程与Windows相接。一个Windows的.EXE文件拥有它使用不同动态链接库的引用,所使用的函数即在那里。当Windows程
序被加载到内存中时,程序中的调用被指向DLL函数的入口,如果DLL不在内存中,系统就将其加载到内存中。
当链接Windows程序以产生一个可执行文件时,你必须链接由编程环境提供的专门的“导入库(import library)库”。这些导入库包含了动态链接库名称和所有Windows函数调用的
引用信息。链接程序使用该信息在.EXE文件中构造一个表,当加载程序时,Windows使用它将调用转换为Windows函数。

代码调试中的问题和解决过程

  • 问题1:我在编译hello.c和Hello.c 程序时都报错了:

  • 问题1解决方案:结果发现就是我的符号打错了,修改之后就可以正常编译了。

  • 问题2:不知道为什么我的输出每次都会多一个%

  • 问题2解决方案: 我试了很多次都还是有%,暂时没找到解决方法。

代码托管

(statistics.sh脚本的运行结果截图)

上周考试错题总结

暂无。

结对及互评

暂无。

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

这学期的第一周第二周是电子实习,所以这门课程开始的稍微晚了一些。当我重新打开蓝墨云,又开始写博客的那一刻起,我才真真正正地感受到,大三下开始了。新的学期到来,上学期的内容不免有些遗漏,上学期Java的成绩不太理想,希望今年的自己能够取得更好的成绩吧。大学的时间已经过了大半了,相当于只剩下三分之一,但愿我能不忘初心,继续前进。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 51/51 1/1 10/14

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:14小时

  • 实际学习时间:10小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

posted @ 2017-09-24 13:23  xuanyan  阅读(200)  评论(0编辑  收藏  举报