IA-32的系统概述

程序转换概述

“指令”的概念

  •  计算机中的指令有微指令机器指令伪(宏)指令之分
  •   机器指令处于硬件和软件的交界面
    •   相当于一个菜谱指定的一个完整做菜过程
    •   – 本章中提及的指令都指机器指令
  •  微指令是微程序级命令,属于硬件范畴
    •   相当于洗、切、煮、炒等做菜“微过程“
  •   伪指令是由若干机器指令组成的指令序列,属于软件范畴
    •   相当于由多个菜谱合成一个”大菜“的过程
  •   汇编指令是机器指令的汇编表示形式,即符号表示 • 机器指令和汇编指令一一对应,它们都与具体机器结构有关,都 属于机器级指令

机器级指令

Gcc使用

• 两个源程序文件main.c和test.c,最终生成可执行文件为test

• 选项-O1表示一级优化,-O2为二级优化,选项-o指出输出文件名

两种目标文件

 

可执行文件的存储器映像

总结

高级语言程序总是转换为机器代码才能在机器上执行
    • 转换过程:预处理、编译、汇编、链接
    • 机器代码是二进制代码,可DUMP为汇编代码表示
    • ISA规定了一台机器的指令系统涉及到的所有方面
例如:
    – 所有指令的指令格式、功能
    – 通用寄存器的个数、位数、编号和功能
    – 存储地址空间大小、编址方式、大/小端
    – 指令寻址方式

IA-32的系统概述

IA-32/x64指令系统概述

  • x86是Intel开发的一类处理器体系结构的泛称
    •   – 包括 Intel 8086、80286、i386和i486等,因此其架构被 称为“x86”
    •   – 由于数字并不能作为注册商标,因此,后来使用了可注册的 名称,如Pentium、PentiumPro、Core 2、Core i7等
    •   – 现在Intel把32位x86架构的名称x86-32改称为IA-32
    •   – IA是Intel Architecture的缩写
  • • 由AMD首先提出了一个兼容IA-32指令集的64位版本
    •   – 扩充了指令及寄存器长度和个数等,更新了参数传送方式
    •   – AMD称其为AMD64,Intel称其为Intl64(不同于IA-64)
    •   – 命名为“x86-64” ,有时也简称为x64

IA-32的体系结构

扫描二维码关注公众号,回复: 3182509 查看本文章

IA-32的寄存器组织

IA-32的标志寄存器

 

IA-32的寻址方式

寻址方式
    – 如何根据指令给定信息得到操作数或操作数地址
• 操作数所在的位置
    – 指令中:立即寻址
    – 寄存器中:寄存器寻址
    – 存储单元中(属于存储器操作数,按字节编址):其他寻址方式
• 存储器操作数的寻址方式与微处理器的工作模式有关
    – 两种工作模式:实地址模式和保护模式
• 实地址模式(基本用不到)
    – 为与8086/8088兼容而设,加电或复位时
    – 寻址空间为1MB,20位地址:(CS)<<4+(IP)
• 保护模式(需要掌握)
    – 加电后进入,采用虚拟存储管理,多任务情况下隔离、保护
    – 80286以上微处理器的工作模式
    – 寻址空间为232B,32位线性地址分段(段基址+段内偏移量)

保护模式下的寻址方式

存储器操作数的寻址方式

各变量应采用什么寻址方式?
x、c:位移 / 基址
a[i]:104+i×4,比例变址+位移
d[i]:544+i×8,比例变址+位移
b[i][j]: 504+i×8+j×2,
            基址+比例变址+位移
将b[i][j]取到AX中的指令可以是:
“movw 504(%ebp,%esi,2), %ax”
其中, i×8在EBP中,j在ESI中,
    2为比例因子    

 IA-32机器指令格式

总结

猜你喜欢

转载自www.cnblogs.com/chenxuming/p/9644959.html