计算机基础6

198 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第34天,点击查看活动详情

第一讲 程序转换概念

指令的概念

计算机中的指令有微指令、机器指令和伪(宏)指令之分

  • 机器指令处于硬件和软件的交界面 相当于一个菜谱指定的一个完整做菜过程

    • 本章中提及的指令都指机器指令
  • 微指令是微程序级命令,属于硬件范畴

    相当于洗、切、煮、炒等做菜"微过程"

  • 伪指令是由若干机器指令组成的指令序列,属于软件范畴

    相当于多个菜谱合成一个"大菜"的过程

  • 汇编指令是机器指令的汇编表示形式,即符号表示
  • 机器指令和汇编指令一、对应,它们都与具体机器结构有关,都属于机器级指令

机器级指令

目标代码和ISA

GCC使用举例

目标文件可用“objdump -d test.o"反汇编为汇编语言程序

编译得到的

image.png

image.png 反汇编得到的

image.png test.o∶可重定位目标文件

test : 可执行目标文件

通过对两种文件的反汇编,得出来的只有地址值不相同

image.png test.o中的代码从地址O开始,test中的代码从80483d4开始!

ISA规定了一台机器的指令系统涉及到的所有方面例如:

  • 所有指令的指令格式、功能
  • 通用寄存器的个数、位数、编号和功能
  • 存储地址空间大小、编址方式、大/小端
  • 指令寻址方式

第二讲 IA-32指令系统概述

  • x86是Intel开发的一类处理器体系结构的泛称

  • 由AMD首先提出了一个兼容IA-32指令集的64位版本

    • 扩充了指令及寄存器长度和个数等
    • AMD称其为AMD64 ,Intel称其为Intl64(不同于IA-64)

IA-32的体系结构

image.png 指令中需给出的信息∶

操作性质((操作码)

源操作数1或/和源操作数2(立即数、寄存器编号、存储地址)

目的操作数地址(寄存器编号、存储地址)

存储地址的描述与操作数的数据结构有关!

IA-32支持的数据类型及格式

image.png

IA-32的寄存器组织

image.png 反映了体系结构发展的轨迹,字长不断扩充,指令保持兼容ST(0)~ST(7)是80位,MMO-MM7使用其低64位

标志寄存器?那么,都存了啥标志呢

  • 6个条件标志

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

AF:辅助进位标志 PF:奇偶标志

  • 3个控制标志

    DF ( Direction Flag ) :方向标志(自动变址方向是增还是减)

    IF( Interrupt Flag ) :中断允许标志(仅对外部可屏蔽中断有用)

    TF ( Trap Flag )︰陷阱标志(是否是单步跟踪状态)

IA-32的寻址方式

概念:如何根据指令给定信息得到操作数或操作数地址

  • 操作数所在的位置

    • 指令中:立即寻址
    • 寄存器中:寄存器寻址
    • 存储单元中(属于存储器操作数,按字节编址)︰其他寻址方式
  • 存储器操作数的寻址方式与微处理器的工作模式有关

    • 两种工作模式∶实地址模式和保护模式
  • 实地址模式(基本用不到)

    • 为与8086/8088兼容而设,加电或复位时
    • 寻址空间为1MB,20位地址:(CS)<<4+(IP)
  • 保护模式(需要掌握)

    • 加电后进入,采用虚拟存储管理,多任务情况下隔离,保护
    • 80286以上微处理器的工作模式
    • 寻址空间为2的32次方 B,32位线性地址分段(段基址+段内偏移量)

image.png

IA-32机器指令格式

IA-32是典型的CISC(复杂指令集计算机)风格ISA

  • 8个通用寄存器(8位、16位、32位)
  • 2个专用寄存器:EIP(PC)、标志寄存器EFLAGS
  • 6个段寄存器(间接给出段基址)
  • 存储器地址空间为4GB,按字节编址,小端方式

image.png

    • 变长指令字、变长操作码
  • 汇编语言格式

    • Intel格式汇编
    • AT&T格式汇编(本课程使用)