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

    信息安全系统设计基础第三周学习总结
    主要的知识点如下:
    一、汇编语言:
    1.生成汇编文件
    (1)使用GCC编译器 例:gcc-og-S- code.c
    2.对o文件进行反汇编
    (1)使用 OBJDUMP
    (2)o-d mstore.o

    二、程序的编码
    1.用Unix命令行编码
    例:编译p1.c和p2c两个文件 linux>gcc-Og-o p p1.c p2.c
    2. 程序的编码-Og是告诉编码器采用的优化等级
    (1)-01表示使用第一级优化,优化的级别与编译时间和最终产生代码的形式都有关
    (2)一般认为第二级优化-02是较好的选择
    3. -o表示将p1.c编译后的可执行文件命名为p

    三、数据格式
    C声明 Intel数据类型 汇编代码后缀 大小(字节)
    Char 字节 b 1
    Short 字 W 2
    int 双字 l 4
    long 四字 q 8
    char 四字 q 8
    float 单精度 s 4
    double 双精度 l 8

    四、访问信息
    1.通用目的存器:%rax、%rbx、%rcr、%rdx、%rsi、%rdi、%rbp、%rsp等等
    2.操作数:立即数Imm 寄存器:R[Ea] 内存引用M[……]
    3. 数据传送指令:
    mov类指令:将源操作数的值复制到目的操作数中,源操作数是一个立即数存储在寄存器中或存储器中,目的操作数指定一个位置可以是寄存器或存储器
    4. 寻址方式
    (1)立即数寻址:操作数在指令中直接给出
    (2)寄存器寻址:作数据存放在CPU的内部寄存器中(源操作数和目的操作数的长度应该一致)
    (3)存储器寻址:操作数存放在存储器中,指令中给出操作数的偏移地址信息
    5.压栈和弹栈:栈是一种数据结构,可以添加或者删除值,遵循“后进先出”的原则,
    通过push操作把数据压入中,通过pop操作删除数据

    五、算数和逻辑操作
    1.一元操作:只有一个操作数,既是源操作数又是目的操作数,可以是一个寄存器,或者是存储器的位置
    2. 二元操作:它有两个操作数,第一个操作数可以是立即数、寄存器或者储存器的位置;第二个操作数既是源也是目的,可以是寄存器或者储存器的位置
    3.移位操作
    SAL算术左移:将各位依次左移指定位数,然后在右侧补0
    SHL逻辑左移:同SAL
    SAR算术右移:将各位依次右移指定位数,然后在左侧用原符号位补齐
    SHR逻辑右移:将各位依次右移指定位数,然后在左侧补0

    六、控制
    1.条件码
    CF:进位标志:最近的操作使用最高位产生了进位可以用来检查无符号操作数的溢出
    ZF:零标志:最近的操作得出的结果为0
    SF:符号标志:最近的操作得到的结果为负数
    OF:溢出标志最近的操作导致一个补码溢出——正溢出或负溢出
    2.SET指令:执行比较指令,根据计算t=a-b的结果设置条件码
    3. 跳转指令
    无条件跳转
    直接跳转:跳转目标作为指的部分编码
    间接跳转:跳转目标可从奇存器或存储器位置中读出
    4. 控制指令
    比较指令:CMP S1,S2
    测试指令TEST S1,S2
    循环指令
    (1)do-while循环
    do
    body-statement
    while(test-expr)
    (2)while-循环
    while(test-expr)
    body-statement
    (3)for循环
    for(init-expr; test-expr; update-expr)
    body-statement
    (4)访问条件码指令
    (5)跳转指令

    七、过程
    1.形式:函数、方法、子例程、处理函数等
    2.机器级支持机制:传递控制、传递数据、分配和释放内存
    3.转移控制:将控制从函数P转移到函数Q可以 call用 ret指令
    4.数据传送:把数据作为参数传递,从过程不返回或返回一个或多个值
    5. 分配和释放内存:栈帧
    call Label过程调用
    call* Operand过程调用
    leave为返回准备栈
    ret从过程调用中返回
    八、异质的数据结构
    1.结构
    所有的组成部分在存储器中连续存放,指向结构的指针指向结构的第一个字节;结构的各个字段的选取是在编译时处理,机器代码不结构包含字段的声明或字段名字的信息
    2.联合
    一个联合的总大小等于它最大字段的大小,而指向一个联合的指针,引用的是数据结构的起始位置
    3.应用
    如果两个数据互斥,减少空间
    访问不同数据的位模式
    使用不同的位模式访问数据
    用有符号数据存储,而返回的无符号的数据

  • 相关阅读:
    maven学习(二)
    maven学习(一)
    一步步点亮led之软硬件分析
    mkv210添加校验和
    led部分Makefile
    makefile
    交叉编译工具链
    基础知识
    C语言复杂表达式与指针应用
    指针
  • 原文地址:https://www.cnblogs.com/cxd20175303/p/11668655.html
Copyright © 2011-2022 走看看