> 文档中心 > 计算机系统基础 第三章程序的转换和机器级表示

计算机系统基础 第三章程序的转换和机器级表示

程序的转换和机器级表示

  • 3.1 程序转换概述
  • 3.2 IA-32 /x86-64指令系统
    • 3.2.1 IA-32的标志寄存器
    • 3.2.2 IA-32的寻址方式
  • 3.3 C语言程序的机器级表示
    • 3.3.1 过程调用的机器级表示
  • 3.4 复杂数据类型的分配和访问
    • 3.4.1 数据的对齐
  • 3.5 越界访问和缓冲区溢出 、x86-64架构

3.1 程序转换概述

3.1.1 机器级指令

机器指令和汇编指令一一对应,都是机器级指令

R:寄存器内容
M:存储单元内容
计算机系统基础 第三章程序的转换和机器级表示

3.2 IA-32 /x86-64指令系统

计算机系统基础 第三章程序的转换和机器级表示

3.2.1 IA-32的标志寄存器

计算机系统基础 第三章程序的转换和机器级表示

  • 6个条件标志
    OF、SF、ZF、CF各是什么标志(条件码)?
    AF:辅助进位标志(BCD码运算时才有意义)
    PF:奇偶标志
  • 3个控制标志
    DF(Direction Flag):方向标志(自动变址方向是增还是减)
    IF(Interrupt Flag):中断允许标志 (仅对外部可屏蔽中断有用)
    TF(Trap Flag):陷阱标志(是否是单步跟踪状态)

3.2.2 IA-32的寻址方式

  • 寻址方式:根据指令给定信息得到操作数或操作数地址
  • 操作数所在的位置
    指令中:立即寻址
    寄存器中:寄存器寻址
    存储单元中(属于存储器操作数,按字节编址):其他寻址方式

3.3 C语言程序的机器级表示

3.3.1 过程调用的机器级表示

  • 过程调用的执行步骤(P为调用者,Q为被调用者)
    (1)P将入口参数(实参)放到Q能访问到的地方;
    (2)P保存返回地址,然后将控制转移到Q;
    (3)Q保存P的现场,并为自己的非静态局部变量分配空间;
    (4)执行Q的过程体(函数体);
    (5)Q恢复P的现场,释放局部变量空间;
    (6)Q取出返回地址,将控制转移到P。
    计算机系统基础 第三章程序的转换和机器级表示

3.4 复杂数据类型的分配和访问

数组、指针、结构体、联合体

3.4.1 数据的对齐

为编译器指定结构体或类内部的成员变量的对齐方式。

3.5 越界访问和缓冲区溢出 、x86-64架构

缓冲区溢出定义:超越数组存储区范围的写入操作称为缓冲区溢出