zoukankan      html  css  js  c++  java
  • 2018-2019-1 20165225《信息安全系统设计基础》第三周学习总结

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


    教材学习内容总结

    gcc -Og -o p p1.c p2.c:-Og告诉编译器使用会生成符合原始C代码整体结构的机器代码的优化等级。
    gcc -Og -S xxx.c:可看到编译器产生的汇编代码。
    objdump -d xxx.o:可查看机器代码文件的内容。
    C语言调用机制使用了栈数据结构提供的后进先出的内存管理原则。
    call指令有一个目标,即指明被调用过程起始的指令地址。
    有些情况下局部数据必须存放在内存中。
    寄存器不够存放所有本底数据。
    对一个局部变量使用地址运算符“&”。
    某些局部变量是数组活结构。
    寄存器组是唯一被所有过程共享的资源。必须确保一个过程调用另一过程时,寄存器值不会被覆盖。
    
    处理器:
    • 程序处理器:只是下条将要执行的指令在存储器中的地址
    • 整数寄存器:包含16个命名的位置,分别存储64位值。可用来记录某些文件状态,也可用来保存临时值。
    • 条纹寄存器:保存最近执行的算数或逻辑指令的状态信息。
    • 浮点寄存器:一组向量寄存器可以存放一个或多个证书或浮点数值。

    处理器的通用目的寄存器
    X86-64的中央处理单元(cpu)包含一组16个存储64位值的通用目的寄存器.

    GDB调试
    • 反汇编:objdump -d mstore.o
    • 可在函数入口设置断点,查看各个寄存器和存储器,还可单步跟踪程序,一次执行几条命令
    汇编指令
    mov类指令:源操作数的值复制到目的操作数中。
    movb 传送字节
    movw 传送字
    movvl 传送双字
    movz 零扩展
    一元操作
    INC 加一
    DEC 减一
    NEG 取负
    NOT 取补
    二元操作
    ADD 加
    SUB 减
    IMUL 乘
    XOR 异或
    OR 或
    AND 与
    CF:进位标志
    ZF:零标志
    SF:符号标志
    OF:溢出标志
    
    寻址方式

    立即数寻址:操作数在指令中直接给出,只能用于源操作数,数据长度应与目的操作数长度匹配。
    寄存器寻址:数放在CPU的内部寄存器中,源操作数与目的操作数长度应一致。
    存储器寻址:操作数存放在存储器中,指令中给出操作数的偏移地址信息。

    本周错题总结

    有关gdb调试汇编,下面说法正确的是()
    
    A .可以用disas反汇编当前函数
    
    B .以16进制形式打印%rax中内容的命令是 print /x $rax
    
    C .可以用info registers查看所有寄存器的值
    
    D .可以用info frame 查看所有栈帧的信息
    
    E .可以使用up,down切换栈帧
    
    正确答案: A B C E  你的答案: A E 
    
    - /x是16进制的打印,info registers可查看所有寄存器的值。
    
    下面的跳转指令与ZF有关的是()
    
    A .jmp
    
    B .je
    
    C .js
    
    D .ja
    
    E .jb
    
    F .jbe
    
    正确答案: B D F  你的答案: A B D
    
    - jbe为小于等于跳转,zf可判断跳转结果是否为0
    
    假设用ADD指令完成C表达式t=a+b的功能,有关条件码寄存器的说法正确的是()
    
    A .若t==0  ,则ZF=1
    
    B .若t<0, 则CF=1
    
    C .若t<0, 则SF=1
    
    D .若(a<0==b<0)&&(t<0 != a<0), 则OF=1
    
    E .若(a<0==b<0)&&(t<0 != a<0), 则CF=1
    
    F .leaq指令不影响条件码寄存器
    
    G .cmp指令不影响条件码寄存器
    
    正确答案: A C D F  你的答案: A D F
    
    - 计算结果为负时,sf为1
    
    x86-64 Linux中,函数调用的返回值存在()寄存器中。
    
    A .%rax
    
    B .%rbx
    
    C .%rcx
    
    D .%rsp
    
    E .%rbp
    
    正确答案: A  你的答案: D
    
    - rsp是指向栈顶的寄存器,rax才是寄存器
    

    结对学习

    • 本周依然和5221同学一起复习。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 3500行 12 14小时
    第一周 63/150 1/12 3小时
    第二周 150/150 2/12 10小时
    第三周 150/150 3/12 13小时
  • 相关阅读:
    CCD类型介绍:Linear, Interline, FullFrame, FrameTransfer CCD的区别
    电源纹波调试小结
    FPGA调试之特殊管脚
    C#获取指定日期的星期,和sql server中根据指定日期取出来的相对应
    利用TSQL添加作业
    SQL insert失败时也会造成自增长字段加1
    ANSI编码
    分页
    PHP编码转换
    SqlDataReader读取带有输出参数的存储过程
  • 原文地址:https://www.cnblogs.com/nmsl123/p/9787136.html
Copyright © 2011-2022 走看看