刘喆君

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

第三周总结

寻址方式经历三代

  1. DOS时代的平坦模式,不用区分用户空间和内核空间,很不安全
  2. 8086的分段模式
  3. IA32的带保护模式的平坦模式

两个抽象

  1. 指令集体系结构(ISA):定义了指令的相关规则,且多条指令是并发执行的,结果像是顺序执行;
  2. 虚拟地址:存储器系统是将多个硬件存储器和操作系统组合起来的

x86-64指令:1-15字节不等

指令格式:OPEN[DEXT[,SRC]];

处理器

  • 程序计数器:%rip指示将要执行的下一条指令在储存器中的地址。
  • 整数寄存器:包含16个命名的位置。
  • 条纹寄存器
  • 浮点寄存器

生成汇编文件:使用-S参数

gcc -S mstore.c

反汇编:使用OBJDUMP

objdump -d mstore.o

数据格式

操作数指示符

  1. 立即数
  2. 寄存器
  3. 内存引用:Imm(Eb,Ei,s)=M[Imm+R[Eb]+R[Ei]*s]

数据传输指令

  • movb 传输字节
  • movw 传输字
  • movl 传输双字
  • movs 符号位扩展
  • movz 零扩展

寻址方式

  • 立即数寻址
  • 寄存器寻址
  • 储存器寻址

压入和弹出栈数据

  • pushq
  • popq

有效加载地址

  • leal

条件码

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

过程

  • 形式:函数,方法,子例程,处理函数
  • 转移控制
    • 将控制从函数P转移到函数Q:call;ret;
  • 数据传输
    • 把数据作为参数传递,从过程不返回或返回一个或多个值
    • x86-64中,可以通过寄存器最多传递6个整型参数
  • 分配和释放内存
    • 栈上的局部存储
    • 寄存器中的局部存储空间
posted on 2018-10-14 19:28  mushroom1111  阅读(138)  评论(0编辑  收藏  举报