2019-2020-1 20175316 《信息安全系统设计基础》第5周学习总结

教材学习内容总结:

## X86 寻址方式经历了一下三代:
DOS时代的平坦模式,不区分用户空间和内核空间,很不安全。
8060的分段模式
IA32的带保护模式的平坦模式

程序编程:

gcc -01 -o p p1.c

1.-01 表示使用第一级优化。优化的级别与编译时间和最终产生代码的形式都有关系,一般认为第二级优化-02 是较好的选择。
2.-o 表示将p1.c编译后的可执行文件命名为p

机器级编程的两种抽象

  • 指令集结构ISA是机器级程序的格式和行为,定义了处理器状态、指令的格式,以及每条指令对状态的影响。
  • 机器级程序使用的存储器地址是虚拟地址看上去是一个非常大的字节数组,实际上是将多个硬件存储器和操作系统软件组合起来。
执行汇编命令:gcc –s xxx.c –o xxx.s
反汇编命令:objdump –d xxx 
64位处理器得到32代码的命令:gcc –m32 –s xxx.c

访问信息

1.三种操作数:立即数、寄存器、存储器
2.数据传送指令:

栈的特点

a、 遵循“后进先出”的原则
b、 push压栈,pop出栈
c、 栈顶:总是从这端插入和删除元素
d、 栈顶元素的地址是最低的
e、 栈指针%esp保存着栈顶元素的地址

1.数据传送示例:

局部变量通常保存在寄存器中;
寄存器访问比存储器访问要快的多。

算术和逻辑操作

1.四组操作:

  • 加载有效地址:将有效地址写入目的操作数,目的操作数必须是寄存器。
  • 一元操作:只有一个操作数,可以是寄存器也可是存储器位置。
  • 二元操作:源操作数是第一个,可以是立即数、寄存器、存储器 ;目的操作数是第二个,可以是寄存器、存储器;两个不能同时为存储器。
    1.特殊的算术操作

控制

2.条件码

  CF:进位标志 
  ZF:零标志
  SF:符号标志
  OF:溢出标志

1.循环结构的三种形式:

do-while:先执行循环体语句,再执行判断,循环体至少执行一次。
while: 把循环改成do-while的样子,然后用goto翻译 
for: 把循环改成do-while的样子,然后用goto翻译

过程

1.栈帧结构:机器用栈来传递过程参数、存储返回信息、保存寄存器用于以后恢复,以及本地存储。为单个过程分配的那部分栈称为栈帧。最顶端的栈帧以两个指针界定,寄存器%ebp为帧指针,寄存器%esp为栈指针。
2.转移控制:call指令、ret指令、leave指令
3.寄存器使用惯例:

%eax,%edx,%ecx 调用者保存寄存器 
%ebx,%esi,%edi 被调用者保存寄存器 
%ebp,%esp 保持寄存器
posted on 2019-10-27 23:51  20175316  阅读(129)  评论(0编辑  收藏  举报