zoukankan      html  css  js  c++  java
  • 20145204《信息安全系统设计基础》第2周学习总结

    20145204《信息安全系统设计基础》第2周学习总结

    教材学习内容总结

    第一章

    •编译器驱动程序
    源程序:利用编辑器创造并保存的文本文件。以hello程序为例,文件名是hello.c。
    源程序——>可执行文件的转换是由编译器驱动程序完成。
    在unix系统上的命令是```gcc –o hello hello.c。
    其中分为四个阶段:预处理阶段、编译阶段、汇编阶段、链接阶段。
    最后运行可执行文件的命令:./hello。
    •系统的硬件组成
    1.总线。
    总线是贯穿整个系统的一组电子管道,携带信息字节并在各个部件之间传递。
    2.I/O设备。系统与外界世界的联系通道。例如:键盘、鼠标、显示器,以及存储数据和程序的磁盘。
    3.主存。临时存储设备,在处理器执行程序时,用来存放程序和处理的数据。
    4.处理器。中央处理单元(CPU),简称处理器。执行存储在主存中指令的引擎。其核心是一个字长的寄存器。CPU的主要操作:加载,即将信息从主存复制到寄存器。存储,即将信息从寄存器复制到主存。操作,将两个寄存器的内容复制到ALU,ALU对两个字做算术操作,结果存放到一个寄存器中。跳转,从指令中取出一个字复制到程序计数器中。
    ·高速缓存器:用于存放处理器近期可能会处理的信息数据,提高程序性能。

    第七章后面内容有涉及。

    vi的基本操作

    ·最基本文本编辑

    1.光标移动:h:光标左移;j:光标下移;k:光标上移;l:光标右移。
    2.字符编辑:将光标移动到需要修改的字符位置,x键:删除该字符;i键:在光标前添加某字符。
    3.文本编辑:无论光标放在哪里,。A键:都会在末尾连续添加字符
    4.退出:输入,q!:放弃所有改动;wq:保存改动。
    5.删除类命令:dw:当前光标处到下一个单词开始处删除。de:当前光标到单词结束。d$:当前光标到行末。

    ·编译:

    ·编译单个程序:以hello为例
    1.gcc hello.c -o hello

    2.运行:./hello

    ·编译模块化程序和单个程序类似不举例了
    作业从控制台输入接收参数,然后把输入的参数打印出来。实现结果:

    编译过程:

    · 预处理:gcc –E hello.c –o hello.i;gcc –E调用cpp
    · 编 译:gcc –S hello.i –o hello.s;gcc –S调用ccl
    · 汇 编:gcc –c hello.s –o hello.o;gcc -c 调用as
    · 链 接:gcc hello.o –o hello ;gcc -o 调用ld

    gdb调试

    · GDB最基本的命令有:(注意使用GCC编译时要加“-g”参数。)
    0.gdb programm(启动GDB)
    1.l 列出源码,相当于list
    2.b 设断点(要会设4种断点:行断点、函数断点、条件断点、临时断点)
    ·行断点:break line
    ·函数断点:break function
    ·条件断点:break line if 条件
    ·临时断点:tbreak
    3.run 开始运行程序
    4.bt 打印函数调用堆栈
    5.p 查看变量值
    6.c 从当前断点继续运行到下一个断点
    7.n 单步运行
    8.s 单步运行
    9.quit 退出GDB
    在实验的过程中发现实验楼给出的程序返回div总是0,以此为例调试:

    1.gdb main进入gdb并输入命令l显示程序:

    2.输入命令break div,run等命令查看发现在进入函数时a=16,b=2,函数参数未丢失,但是结果返回却是0,考虑是否是强制转换数据类型的问题。

    3.修改div.c文件,添加double s=(double)a/b,return s,调试显示s结果正确但还是最后结果有问题

    4.最后就只能是函数返回值的问题?

    ·makefile

    Makefile的一般写法:

    试着将add.c……等程序makefile(注意使用Tab键):

    ·生成静态库math.h,共享库math.so

    · 生成静态库:
    1.生成目标文件gcc -c add.c sub.c mul.c div.c
    2.生成静态库:ar rcs math.a add.o sub.o mul.o div.o
    ·生成共享库
    1.生成目标文件:gcc -fpic -c add.c sub.c mul.c div.c
    2.生成共享库:gcc -shared -o math.so add.o sub.o mul.o div.o
    以下是步骤过程图,在最后用ls显示当前目录的文件可以看见静态库和共享库生成。

    学习中遇到的问题与解决方法

    · 在git搭建远程仓库后出现以下的问题:无法推送一些条引用到git……,使用+master也无法推送

    解决办法:输入git fetch origin master,后继续输入:git merge origin/master实现从远程分支获取最新版本。最后成功推送。

    · unbuntu安装vimtutor时出现错误:

    解决办法:
    利用ps aux查看进程

    找到_apt的pid

    使用sudo kill 杀死进程

    ·gdb问题

    如果没有使用-g参数编译程序,gdb时就会出现下面问题:

    · makefile问题:
    1.不使用tab键,会出现如下错误。只需要将你空格的地方改为Tab键即可。

    托管代码截图

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 3500行 30篇 400小时
    第一周 100/100 1/1 20/20
    第二周 200/300 1/2 30/50

    参考资料

  • 相关阅读:
    自由职业一时爽,一直自由一直爽
    N+6 裁员裁出幸福感的背后
    你真的了解 Cookie 和 Session 吗?
    百亿级企业级 RPC 框架开源了!
    做一个有脑子的程序员
    Java 生态核心知识点整理
    关于第三方支付,看这篇文章就够了!
    程序员该不该主动提加薪?
    我是为何下定决心入行程序员的
    老程序员被新程序员拍在沙滩上?
  • 原文地址:https://www.cnblogs.com/yayaer/p/5901903.html
Copyright © 2011-2022 走看看