第3章 IA-32微处理器指令系统简介

合集下载

Intel IA-32处理器结构与原理

Intel IA-32处理器结构与原理
22
• 智能功效管理(Intelligent Power Capability) 超细粒度功耗控制能够只对处于工作状态的 部件提供电源,而关闭非工作部件的电源供 应,从而有效降低功耗。 分离总线技术能够使总线宽度动态适应数据 宽度的需要,对无效的信息位使其进入低电 压状态,从而进一步降低功耗。 功效管理平台技术通过调整散热风扇运作模 式,从外部降低处理器温度。
第2章 Intel IA-32处理器结构与原理
张明武
scauzhang@
华南农业大学信息(软件)学院
1
2.1 Pentium处理器
2.1.1 Pentium处理器的特性 • 80x86系列微处理器兼容 • 有64位数据总线、 32位地址总线,寻址空间4GB。 • RISC型超标量结构 - 两个5级整数指令流水线,一个8级浮点流水线。 • 具有超级流水线技术的高性能浮点运算器。 • 数据-代码分离式高速缓存,符合MESI协议。 • 增强的错误检测和报告功能。 • 利用片上分支目标缓冲器提高分支指令预测准确性。 • 常用的指令不采用微程序设计,而改用硬件实现。 • 支持64位外部数据总线突发传输方式 • 通过APIC总线支持多处理器系统
执行引擎 Local Local APIC APIC L2 Cache
总线接口
14
系统总线
系统总线
AMD的双核
Intel的Pentium D双核
15
4. Intel的EM64T技术
• 完全兼容现在的IA-32结构 • 具有传统IA-32模式和IA-32e模式,IA-32e模式 包括64位模式和兼容模式(允许现有程序无需 修改就运行在传统IA-32模式和兼容模式下) • 64位模式下具有以下特性: 64位平板线性地址 增加8个新的通用寄存器 增加8个新的流SIMD扩展(SSE, SSE2和 SSE3) 64位宽的通用寄存器和指令指针寄存器

IA-32卷3:经典系统编程指南[1、2、3、5章节]

IA-32卷3:经典系统编程指南[1、2、3、5章节]

IA-32 Intel®架构软件开发人员手册 卷3:系统编程指南(中文版-部分)前言现在开放源代码逐渐成为趋势的环境下,获取高水平的源代码的途径越来越容易,尤其是涉及操作系统的源代码,受到越来越多的有志于研究底层的开发人员的青睐。

然而操作系统(内核)源代码具有规模大、专业性强、涉及的知识面广的特点,大部分首次接触内核源代码的人感觉不少部分尤其是与硬件平台相关部分(任务切换、内存管理等方面)难以理解,而这些难以理解的部分却又往往是操作系统的核心部分。

对于造成操作系统代码难以理解的原因有多个方面,主有对操作系统若干理论、概念理解不深,这可以通过阅读操作系统相关书籍来弥补。

目前比较经典的操作系统书籍有多种,各有各的特色,有纯理论的,也有理论与实践相结合的。

“工欲善其事,必先利其器”在开始探究操作系统源代码之前,仔细深入的研究这些基本概念、基本理论是十分必要的。

然而这些还是不够的,除了理解操作系统概念理论之外,对于操作系统运行的硬件的了解也是非常必要的。

而目前缺乏x86平台权威资料,流行的教材都讲的比较基础,而与操作系统设计与开发方面相关的信息,讲得普遍比较少甚至少有涉及,而intel官方出的三卷手册就目前来讲是最全面、最权威的x86平台资料了,由于是官方版本是英文版,所以在很大程度上限制了它的流行,即使平时查阅相关资料时,也大都只是参考它的部分章节而对其全貌仍未了解。

这三卷各有特色,其中卷3主要是指针对与操作系统设计方面并鉴于目前情况,产生了首先将手册之卷3翻译为中文的念头,但是由于它篇幅很大(PDF版本有780页之巨)仅个人力量很难完成,所以借助于网络平台,召集大家共同分担完成,在此也非常感谢赵博士为大家提供了那么好的交流平台。

目前已经分配的翻译任务如下:第1章关于本手册第2章 系统架构概况 我(lijshu)基本已经译完,就是目前这个文件:-) 第3章 保护模式下的内存管理由sportsman 负责翻译第4章 保护机制 由sportsman 负责翻译第5章 中断和异常处理由wykr3879 负责翻译第6章 任务管理 由wykr3879 负责翻译第7章 多处理器管理由Timeless 负责翻译第8章高级可编程中断控制器由beyond 负责翻译第9章处理器管理与初使化由极速时空 负责翻译第10章 内存高速缓冲存储器控制 由engumen负责翻译其余的部分还没有落实,希望有兴趣、有精力的参加进来,让我们共同完成这个项目!由于翻译是一件非常不容易的工作,尤其是达到“信、达、雅”的地步更就难了,译稿只能尽最大能力保持准确把握原文的意思,但是由于每个人能力及对原文的理解不同,因此对于译稿肯定有很多有待商榷的地方,甚至是错误的地方,因此请大家指出来,便于进一步修改、完善译稿,以供大家飨用。

《计算机硬件技术基础(第三版)》第3章 32位微处理器

《计算机硬件技术基础(第三版)》第3章 32位微处理器
计算机硬件技术基础
(1)总线接口部件 总线接口部件与片内Cache外部总线接口实行的是逻辑接口连接。当访问 Cache出现没命中、或需更改系统存储器内容、或需向Cache写入某些信 息时,就要通过总线接口从外部存储器系统中取出一批数据。 (2)预取缓冲部件 预取缓冲部件 取指令是指从高速缓冲存储器Cache内或从内存储器中取出指令代码, 以备译码之用的操作。 (3)指令译码部件 指令译码部件 译码操作, 一是检查一条指令的格式, 二是确定它是哪种类型操作的指令,并给出这条指令所需的操作数。 (4)控制部件 控制部件 Pentium微处理器控制部件的作用是,负责解释来自指令译码部件的 指令字和控制ROM的微代码。控制部件的输出控制着整数流水线部件和 浮点部件。 (5)执行部件 执行部件 是微处理器用于执行指令所规定的具体操作的CPU的核心硬件部分。 这些非常具体的操作是指诸如数值运算、逻辑操作以及分支转移处理等。
为了支持在Pentium内采用的分支转移预测新技术,芯片内装备有两个 预取缓冲存储器,一个是以线性方式来预取代码,另一个则是根据分支转 移目标缓冲器(BTB)预取代码。这样就可以保证在执行之前将所需用的 指令从存储器预取出来。 由于Pentium采用了这项技术,可以在无延迟的情况下正确地预测各 种转移。另外,V流水线中的条件转移指令可以与一条比较类指令成对执 行,当然也可以与U流水线中的置标志指令配合执行。但Pentium作到了 与现有软件是完全兼容,所以不必修改现有软件。
计算机硬件技术基础
3.1 .
CISC和RISC 和
1 复杂指令系统计算机 复杂指令系统计算机—CISC 每一种微处理器的CPU都有属于它自己的指令系统。 CPU正是通过执行一系列的特定的指令来实现应用程序 的某种功能。像Intel x86系列,为了增加新的功能, 就必须增加新的指令;另一方面,为了保持向上兼容, 又必须保留原有的指令。每条指令又有若干个不同的操 作字段,用来说明要操作的数据类型,以及存放的位置。 这就意味着一个较大的指令系统和复杂的寻址技术。以 这样的微处理器为平台的计算机系统就是“复杂指令系 统计算机”(CISC)。 CISC也有许多优点,如指令经编译后生成的指令程 序较小执行起来较快,节省硬件资源。像存取指令的次 数少,占用较少的存储器等。

03第三章IA-32指令系统

03第三章IA-32指令系统
26
3.逻辑运算与移位指令
❖ (1)逻辑运算指令 (P116) ❖ (2)移位与循环移位指令 (P119)
表3-3 逻辑运算指令格式
27
4.字符串处理(P128)
❖ 8086/8088指令系统为文本处理提供了一组强有 力的指令(字符串处理指令),对一系列含有 字母数字代码的字节(也称字符串)进行处理, 例如传送、比较、查找、插入、删除等,字符 串指令为这些处理提供了很大方便。字符串指 令的寻址方式只用隐含寻址,源串固定使用SI, 目的串固定使用DI。
一条指令可能包含多种寻址方式。 16
2. 转移地址的寻址方式 ❖ (1)段内直接寻址 ❖ (2)段内间接方式 ❖ (3)段间直接寻址 ❖ (4)段间间接方式
17
(1)段内直接寻址
❖ 段内直接寻址方式也称为相对寻址方式,转移的目标 地址是当前IP内容和一个8位或16位的位移量之和, 这个位移量是指令代码的一部分,所以叫相对寻址。 如图3-8所示
21
3.2 8086的指令系统

1.数据传送类(P94);

2.算术运算类;

3.逻辑运算与移位指令;

4.字符串处理;

5.控制转移指令;

6.处理器控制指令。
22
1.数据传送类
❖ (1)通用数据传送指令
❖ 这种指令共5条。
❖ (2)条件传送指令(P96) ❖ (3)交换指令(P97) ❖ (4)堆栈操作指令(P99) ❖ (5)输入输出指令(P102) ❖ (6)扩展指令(P102) ❖ (7)目标地指传送指令
微机接口技术
第三章 指令系统

3.1 8086的寻址方式

3.2 8086的指令系统

2 IA-32结构微处理器

2 IA-32结构微处理器

但在8086中,由于BIU和EU是分开的, 所以,取指和执行可以重叠进行。它的执 行顺序如图2-3所示。
于是就大大减少了等待对取指所需的 时间,提高了CPU的利用率。一方面可以 提高整个程序的执行速度,另一方面又降 低了与之相配的存储器的存取速度的要求。 这种重叠的操作技术,过去只在大型机中 才使用称为流水线,在IA-32系列微处理器 中得到了广泛的使用与提高。
1.通用寄存器
八个32位通用寄存器AX、BX、CX、 DX、SI、DI、BP和SP用于处理以下项: 逻辑和算术操作的操作数; 用于地址计算的操作数; 内存指针。
虽然所有这些寄存器都可用于存放操 作数、结果和指针,但在引用SP寄存器时 要特别小心。SP寄存器保持堆栈指针,通 常不要用于其它目的。
4. 浮点支持
工程应用、图形处理、科学计算等要 求浮点支持(实数运算)。因此,自80486 芯片开始,在IA-32微处理器中集成了x87 (及其增强)浮点单元。
5. MMX技术
为支持多媒体技术的应用,如音乐合 成、语音合成。语音识别、音频和视频压 缩(编码)和解压缩(译码)、2D 和 3D 图形(包括 3D 结构映像)和流视频等等。 IA-32处理器中增加MMX技术及相应的指令
第2章
IA-32结构微处理器 与8086
2.1
IA-32微处理器是8086的延伸
2.2
8086的功能结构
2.3
8086微处理器的执行环境
2.1 IA-32 微处理器是8086的延伸
如上章所述,IA-32结构微处理器的 增长基本上按摩尔定律发展,已经经历许 多代。但从使用者(包括程序员)的角度 来看,它是以8086处理器为基础,是一个 兼容的微处理器系列,是8086在功能上和 性能上的延伸。

微机原理第3章-指令系统

微机原理第3章-指令系统

▲按给出偏移地址方式的不同,分为以下5种: 寄存器间接寻址 寄存器相对寻址 基址加变址寄存器 相对基址加变址寄存器 MOV AL, [ BX ] MOV AL, [ BX + 10H ] MOV AL, [ BX + SI ] MOV AL, [ BX + SI + 10H ]
(1)寄存器间接寻址
寄存器寻址方式的操作数是寄存器的值,指令中直接 使用寄存器名,包括8位或16位通用寄存器和段寄存器。可 使用的16位寄存器:AX、BX、CX、DX、SI、DI、SP、 BP;其中:AX、BX、CX、DX可分成两8位使用。
例: MOV AX,CX
;(AX)
(CX)
INC CX
;(CX)
(CX)+1
3.直接寻址(Direct Addressing)
0002
AH
AL
默认段寄存器的关系: ① 使用BX、SI、DI,默认段寄存器为DS
(BX)
PA = ( DS )×10H + (SI) (DI)
② 使用BP,默认段寄存器为SS PA = ( SS )×10H + ( BP )
使用BX、SI、DI的寄存器寻址,默认段寄存器为DS
寄存器组 AH AL BH BL CH CL DH DL SI DI BP SP AX BX CX DX DS ES SS CS IP 地 址 加 法 器
运 算 器
控制总线CB


PSW标志 寄存器
执行部件控制电路
CPU
总线
内存
例: MOV AX , [ BX + SI ]
若 ( DS ) = 4000H
( BX ) = 2000H ( SI ) = 100H 则内存操作数的物理地址为:

第三章 Win32汇编语言汇编语言程序设计基础指令系统PPT课件

第三章 Win32汇编语言汇编语言程序设计基础指令系统PPT课件

16
LEA 与 OFFSET
buffer db 100 dup(0)
;把字节变量buffer的EA传送给EBX
lea ebx, buffer

mov ebx, offset buffer √
buffer db 100 dup(0) lea ebx, [buffer+50] √ mov ebx, offset [buffer+50] ;X
2020/11/17
10
MOVZX / MOVSX
将源操作数的内容拷贝到目 的操作数中
MOVZX(move with zero-extend) 将该值零扩展至16位或32位
MOVSX(move with sign-extend) 将该值符号扩展至16位或32 位
目的操作数必须是寄存器
例:MOVSX EAX,CL MOVSX EDX,[EDI]
IA-32CPU指令系统包括:
① 通用指令 ② 浮点运算指令 ③ SIMD指令 ④ MMX指令(多媒体扩展指令集 ) ⑤ SSE/SSE2/SSE3指令(单指令多数据流扩展 ) ⑥ 系统指令 ⑦ 64位模式的指令
2020/11/17
3
通用指令集合
① 数据传送类指令 ② 算术运算类指令 ③ 位操作类指令 ④ 串操作类指令 ⑤ 控制转移类指令 ⑥ 处理机控制类指令 ⑦ 其他类
注意:不是获取存储器单元的内容
2020/11/17
15Βιβλιοθήκη 有效地址传送指令LEA将存储器操作数的有效地址传送至指定的 寄存器中。
在实模式下,使用16位寄存器 在保护模式下,使用32位寄存器
该指令通常用来对指针或变址寄存器EBX、 EDI或ESI等置初值之用。

IA-32处理器的功能结构

IA-32处理器的功能结构
的数据 堆栈段(Stack Segment)主存中堆栈所在的区
域。程序使用的堆栈一定在堆栈段。 代码段寄存器CS,堆栈段寄存器SS,数据段寄存器
DS,附加段寄存器ES 。FS和GS都属于数据段性质 的段寄存器 段寄存器属于专门的寄存器,不能与通用寄存器一 样使用,只能用于保存与段基地址有关的信息
总线接口单元
指令队列、指令指针、段寄存器、地址加法器和总线 控制逻辑
管理与系统总线的接口,负责对存储器和外设访问
执行单元
ALU、通用寄存器、标志寄存器和控制电路 负责指令译码、数据运算和指令执行
指令执行的两个主要阶段:取指和执行
取指:从主存取出指令代码进入指令队列 执行:译码指令、并发出有关控制信号实现指令功能
处理器按照无符号整数求得结果 设置进位标志CF 设置溢出标志OF
程序员决定 操作数是无符号数,关心进位 操作数是有符号数,注意溢出
IA-32处理器的功能结构
溢出标志的判断方法
处理器硬件判断规则
最高位和次高位同时有进位或同时无进位, 无溢出;最高位和次高位进位状态不同,有 溢出
人工判断的简单规则
数据存储格式举例
例2-4 在0x1000开始的存储单元依次存放的
字节是0x12,0x34,0x56,0x78,如图2-7所
示。分别以字节、字和双字访问存储单元,
其结果如何?
0x1004
...
0x1003
0x78
0x1002
0x56
0x1001
0x34
0x1000
0x12
图2-7各单元存储情况
IA-32处理器的功能结构
执行CLI指令设置IF=0 执行STI指令设置IF=1
IA-32处理器的功能结构

微机原理第2章-IA32微处理器的功能结构

微机原理第2章-IA32微处理器的功能结构
2.3.4 基本程序执行寄存器
0
15
16
31
0
15
0
15
16
31
7
8
AL
BL
CL
DL
AH
BH
CH
DH
EAX
EBX
ECX
EDX
ESP
EBP
ESI
EDI
1.通用寄存器
EAX 累加器寄存器:存放操作数和结果 EBX 基址寄存器:在DS段中的数据指针;存放操作数 ECX 计数寄存器:串和循环操作的计数器 EDX 数据寄存器:I/O指针
逻辑地址 是程序中使用的地址,它由段基址和段内偏移值所组成,段基址与段内偏移值都为16位的二进制数。
物理地址 也叫实际地址或绝对地址,是CPU访问存储器时实际使用的地址,为20位地址。 物理地址=段基址×16+段内偏移地址。
1
2
存储器物理地址的形成
【例】各独立段的分配情况示例。
设CS=B000H、DS=1CDEH、SS=4200H、ES=0150H,它们分别为代码段、数据段、堆栈段和附加段的段首址。自每个段首址开始,各段均占64KB的范围,各段之间互不重叠。
基本寄存器:在程序执行时暂时保存中间结果;在进行算术运算和逻辑运算时,通用寄存器任何一个都可以作为源操作数或目的操作数。
指针和变址寄存器
ESI 串操作的源指针 EDI 串操作的目标指针 ESP 堆栈指针 EBP 堆栈上数据指针
通用寄存器的特殊用途和隐含性质
6个段寄存器,保存16位段基址: CS 代码段 SS 堆栈段 DS 数据段 ES 附加段 FS 数据段F GS数据段G
指令的重叠操作
2.2.2 80386的功能结构

第3章16位32位微处理器指令系统

第3章16位32位微处理器指令系统


(DI)= 1100H
32100H
AX
存储器 30000H
00H 50H
… 32100H
(SS)×10H= 40000H
(BP)= 2000H

(SI)= 1200H
43200H
存储器 40000H
AH

43200H 56H
11
其它寻址方式
1、固定寻址(隐含寻址):指令中不指明操作数,但是隐含规 定的寻址方式。 Eg:DAA ;对寄存器AL中的数据进行十进制调整
除标志寄存器传送指令外,均不影响标志位。
1 通用数据传送指令MOV、XCHG、XLAT、PUSH、POP 2 标志寄存器传送指令 3 目标地址传送指令 4 输入/输出指令
1) MOV传送指令
格式: MOV OPD,OPS MOV指令是使用最多的指令,它可以完成CPU内寄存器之间、
寄存器与存储器之间的数据传送,还可以将立即数送入寄存器 或内存。 MOV AL,BL;将寄存器BL的内容传送到寄存器AL中。 MOV [DI], AX;将寄存器AX的内容传送到DI和DI+1所
源操作数隐含为栈顶单元 指令执行后SP+2
PUSH指令的例子
例:假设在指令执行前,(SP)=1000H;(AX)= 1234H。试分析 PUSH AX指令的执行结果。
堆栈段
SP ① 0FFEH 34H
0FFFH 12H
SP
1000H
存储器
② AX
POP指令的例子
例:假设在指令执行前,(SP)=0FFEH,(BX)=2004H,并且堆 栈段栈顶(0FFEH)单元内存放34H,(0FFFH)单元内存放12H。 试分析POP BX指令的执行结果。

IA-32结构微处理器与8086

IA-32结构微处理器与8086

第1章 概述 第2章 IA-32 结构微处理器与 8086 2.3 8086微处理器的执行环境
2.3.2 基本的程序执行寄存器:
通用寄存器 段寄存器 程序状态和标志寄存器 IP寄存器
汇编助记符:
16位寄存器的汇编助记符为 AX~DX、SI、DI、BP 8位寄存器的汇编助记符为 AH、AL、BH、BL、CH、CL、DH、DL AH、AL是AX的高/低8位,设:AX=5678H 则: AH=56H,AL=78H 反之,当89HAH,90HAL后 则: AX=8990H
2.段寄存器:
D15 D0
CS SS DS ES FS GS
代码段寄存器 堆栈段寄存器 数据段寄存器 附加数据段(附加段)寄存器 附加数据段(附加段)寄存器 附加数据段(附加段)寄存器
3.标志寄存器(F): 为16位,包含一组状态标志、一个控制标志一个系统 标志;
(1)状态标志:CF(进位标志)、AF(辅助进位标志)、 OF(溢出标志)、 SF(符号标志)、 PF(奇偶标注)、 ZF(零标志)
在实模式下,段寄存器存放相应逻辑段的段基址
逻辑段 代码段 堆栈段 数据段 附加段 段基址存放在 偏移地址存放在 CS IP SS SP DS 根据不同的寻址方式 ES/FS/GS 选择BX、SI、DI
代码段:CS*24+IP=指令单元的物理地址 一条指令的一个字节取出后,IP自动加1,指向 下一字节。 堆栈段:SS*24+SP=栈顶单元的物理地址 数据段:DS*24+偏移地址=数据单元的物理地址
2.存储器的分段管理: 8086对存储器采用分段管理,一个单元的物 理地址由两部分组成,写成: 段基址∶偏移地 址。 10000H 一 设某单元物理地址为12345H, 个 则: 逻 12345H= 1000H *24+ 2345H 辑 段基址 偏移地址 12345H 段 逻辑地址

IA-32指令系统概述

IA-32指令系统概述

Intel处理器已停产现有产品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” ,有时也简称为x64IA-32的体系结构是怎样的呢?寄存器个数及各自功能?寄存器宽度?存储空间大小?编址单位?指令格式?指令条数?指令操作功能?寻址方式?数据类型?小端/大端?标志寄存器各位含义?PC位数?I/O端口编址方式?……控制器CPU PC 输入设备输出设备MAR MDR A L U 标志寄存器IR 地址数据控制GPRs 01存储器01234控制器A L U 标志寄存器地址数据控制GPRs 017ffffffff80483d680483d580483d405589e5EIP bfff0000MDR IR MAR beeefffc IA-32的体系结构是怎样的呢?8个GPR(0~7),一个EFLAGs,PC为EIP 可寻址空间4GB(编号为0~0xFFFFFFFF)指令格式变长,操作码变长,指令由若干字段(OP、Mod、SIB等)组成……计算机中数据的存储•计算机中的数据存放在哪里?寄存器文件通用寄存器组GPRs 存储器指令中需给出的信息:操作性质(操作码)源操作数1 或/和源操作数2 (立即数、寄存器编号、存储地址)目的操作数地址(寄存器编号、存储地址)存储地址的描述与操作数的数据结构有关!相当于宿舍书架相当于图书馆书架IA-32支持的数据类型及格式IA-32架构由16位架构发展而来,因此,虽然字长为32位或更大,但一个字为16位,长度后缀为w;32位为双字,长度后缀为l long double实际长度为80位,但分配96位=12B(按4B对齐)IA-32的寄存器组织IA-32的寄存器组织反映了体系结构发展的轨迹,字长不断扩充,指令保持兼容ST(0) ~ ST(7)是80位,MM0 ~MM7使用其低64位80286/386•6个条件标志8086IA-32的寻址方式•寻址方式–如何根据指令给定信息得到操作数或操作数地址•操作数所在的位置–指令中:立即寻址–寄存器中:寄存器寻址–存储单元中(属于存储器操作数,按字节编址):其他寻址方式•存储器操作数的寻址方式与微处理器的工作模式有关–两种工作模式:实地址模式和保护模式•实地址模式(基本用不到)–为与8086/8088兼容而设,加电或复位时–寻址空间为1MB,20位地址:(CS)<<4+(IP)•保护模式(需要掌握)–加电后进入,采用虚拟存储管理,多任务情况下隔离、保护–80286以上微处理器的工作模式–寻址空间为232B,32位线性地址分段(段基址+段内偏移量)保护模式下的寻址方式•SR段寄存器(间接)确定操作数所在段的段基址•有效地址给出操作数在所在段的偏移地址•寻址过程涉及到“分段虚拟管理方式”,将在第6章讨论存储器操作数跳转目标指令地址SKIPIA-32的寄存器组织返回寻址方式int x;float a[100];short b[4][4];char c;double d[10];a[i]的地址如何计算?104+i×4i=99时,104+99×4=500 b[i][j]的地址如何计算?504+i×8+j×2i=3、j=2时,504+24+4=532 d[i]的地址如何计算?544+i×8i=9时,544+9×8=616b31b0xa[0]a[99]b[0][1]100104b[0][0]b[3][3]b[3][2]c500504532536544d[0]d[9]616Linux系统:double型变量按4B边界对齐windows系统:double型变量按8B边界对齐各变量应采用什么寻址方式?x、c:位移/ 基址a[i]:104+i×4,比例变址+位移d[i]:544+i×8,比例变址+位移b[i][j]:504+i×8+j×2,基址+比例变址+位移int x ;float a[100];short b[4][4];char c;double d[10];b31b0xa[0]a[99]b[0][1]100104b[0][0]b[3][3]b[3][2]c500504532536544d[0]d[9]616将b[i][j]取到AX中的指令可以是:“movw 504(%ebp ,%esi ,2), %ax”其中,i×8在EBP中,j在ESI中,2为比例因子位移量和立即数都可以是:1B/2B/4BSIB 中基址B和变址I都可是8个GRS中任一个;SS给出比例因子操作码:opcode; W:与机器模式(16 / 32位)一起确定寄存器位数(AL / AX / EAX); D:操作方向(确定源和目标)寻址方式(ModRM字节):mod、r/m、reg/op三个字段与w字段和机器模式(16/32)一起确定操作数所在的寄存器编号或有效地址计算方式IA-32机器指令格式8d 04 02 leal (%edx,%eax,1), %eax 1000 110100 000 10000 000 010存储器操作数总结•IA-32是典型的CISC(复杂指令集计算机)风格ISA–8个通用寄存器(8位、16位、32位)–2个专用寄存器:EIP(PC)、标志寄存器EFLAGS –6个段寄存器(间接给出段基址)–存储器地址空间为4GB,按字节编址,小端方式–寻址方式•立即、寄存器、存储器(SR :[B]+[I]*s+A )•相对寻址–变长指令字、变长操作码•汇编语言格式–Intel格式汇编–AT&T格式汇编(本课程使用)段基址+有效地址(偏移量)8(%edx,%eax,4)。

IA-32指令集汇编语言说明书

IA-32指令集汇编语言说明书

for (j=0; j<4; j++) printf("Byte %d: %x\n", j, p[j]);
}
Byte 0: ff"
Output on a
Byte 1: 77"
little-endian
Byte 2: 33"
machine
Byte 3: 0"
6
IA-32 General Purpose Registers"
char i; … if (i > 5) {
i++; else
i--; }
cmpb $5, %al jle else incb %al jmp endif else: decb %al endif:
8
C Example: Four-Byte Data"
Global int variable i is in %eax, the full 32 bits of the “A” register.
• Character: 1 byte! • Short, int, and long: varies, depending on the computer! • Float and double: varies, depending on the computer! • Pointers: typically 4 bytes!
• Register addressing!
• Example: movl %edx, %ecx" • Choice of register(s) embedded in the instruction! • Copy value in register EDX into register ECX!

IA-32

IA-32

IA-32处理器体系结构第一节、微机的基本结构一、CPU主要单元CPU(Central processor unit)由以下几个部分组成:1)控制单元,负责总线操作,指令调度,数据访问调度等2)算术逻辑单元,负责对输入数据进行处理3)寄存器,存储用于CPU执行计算、地址访问、指令指针、标志位等的数据4)时钟,发送时钟脉冲,以便执行指令操作,时钟脉冲时间称为一个时钟周期二、BUS总线CPU通过总线和外部设备执行通信1)控制总线用于传输IO指令2)地址总线用于指示IO地址3)根据指令和地址,IO设备通过数据总线读/写数据三、CPU基本结构图示1)从内存中取出指令2)取数据:寄存器、内存操作数3)解指令4)执行5)输入操作数到算术逻辑单元6)更新标志寄存器,数据输出到寄存器或内存第二节、内核处理机制一、Pipelining 使用多级流水线当前流水线单元处理一条操作指令并移入下一个环节时,当前单元马上接受上游传递的任务指令,而不是等待所有处理单元完成时,称为多级流水线技术(Pipelining)。

k级流水线处理一条指令的周期是k,n条指令的周期是k + (n - 1),一条指令执行k个时钟周期,二条指令需要k + 1个时钟周期,前一条指令执行完毕,跟随的指令处于流水线的最下游,n条指令的执行周期依此类推。

二、Super scalar 超标量体系结构当某级流水线处理指令需要1个以上时钟周期,则上游指令必须进入等待,使用多条流水线以便在同一级流水线的同一个时钟周期处理多条指令。

三、内存读取因为IO设备、CPU指令执行、系统总线之间的不同步,CPU执行单元等待操作数从内存中取出称为等待状态。

读内存数据的周期分解:1)将内存地址放入数据总线2)设定读标志为低位,以通知存储器准备数据3)存储器响应读标志,在指定地址取出数据放置到数据总线4)数据被CPU获取,恢复读标志的高位状态四、Cache memory CPU高速缓存利用CPU内置的一级、二级缓存,提高CPU指令访问内存操作数的效率,当请求的内存操作数位于L1或L2缓存时,CPU就无需从慢得多的RAM设备请求数据,称为缓存命中。

《微处理器指令系统》课件

《微处理器指令系统》课件

PART THREE
简洁性:指令数 量少,易于理解
和记忆
完备性:能够实 现所有需要的功

正交性:不同指 令之间互不干扰,
易于组合使用
效率性:指令执 行速度快,占用
资源少
可扩展性:易于 添加新的指令和
功能
兼容性:与其他 指令系统兼容, 便于移植和升级
指令编码:采用二进制编码,便于计算机处理 指令格式:包括操作码、地址码、控制码等部分 指令集设计:包括基本指令、扩展指令、系统指令等 指令执行:包括取指、译码、执行、写回等步骤 指令优化:包括指令级并行、流水线技术、分支预测等 指令兼容性:考虑与现有指令系统的兼容性,便于软件移植和升级
特点:简洁、高效、易于实现
汇报人:
指令级优化:通过编译器优化、硬件优 化等技术提高指令执行效率
指令级安全:增加安全指令,提高系统 安全性
指令级虚拟化:通过虚拟化技术实现指 令级隔离和资源共享
指令级可扩展性:通过可扩展指令集实 现指令级可扩展性
PART FIVE
指令编码:将指令转换为二进制代 码
编码规则:根据指令的功能、操作 数、操作码等确定编码规则
指令集优化:选择合适的指令集,提高执行效率 流水线优化:采用流水线技术,提高指令执行速度 缓存优化:优化缓存设计,提高数据访问速度 并行优化:采用并行技术,提高指令执行效率 功耗优化:优化功耗设计,降低功耗,提高性能 安全性优化:采用安全技术,提高指令系统的安全性
PART FOUR
特点:指令丰富, 功能强大
优点:易于编程, 提高效率
缺点:硬件复杂, 成本高
应用:早期计算机 ,如IBM PC系列
特点:指令简单、执行速度快、功耗低 设计原则:减少指令数量、提高指令执行效率 应用领域:嵌入式系统、移动设备、网络设备等 代表产品:ARM、MIPS、PowerPC等

IA-32指令简表

IA-32指令简表

IA-32指令简表IA-32指令共有10个部分:一般用途指令、x87浮点运算处理单元指令、x87浮点运算处理单元和SIMD状态管理指令、MMX指令、SSE指令、SSE2指令、SSE3指令、系统指令、64位模式指令、虚拟机扩展。

下表显示了各IA-32构架CPU支持各部分指令的情况:1. 一般用途指令一般用途指令执行基本的数据移动、算术运算、逻辑运算、程序流程和字符串操作,这些操作通常被程序员用来写运行于IA-32处理器上的应用程序和系统程序。

这些指令可以操作在内存中、通用寄存器中和标志寄存器中的数据,也可以是存储于内存、通用寄存器和段寄存器中的地址信息。

现代微机原理与接口技术·2·附录B IA-32指令简表·3·现代微机原理与接口技术·4·附录B IA-32指令简表·5··6·现代微机原理与接口技术2. x87浮点运算处理单元指令附录B IA-32指令简表·7·现代微机原理与接口技术·8·3. x87浮点运算处理单元和SIMD 状态管理指令以下为两个基于IA-32结构Pentium II 系列处理器的状态管理指令:4. MMX 指令四项扩展指令集被引入IA-32结构,使得IA-32处理器能够执行SIMD 操作。

这四项扩展分别是MMX 技术、SSE 指令、SSE2指令和SSE3指令。

MMX 指令可处理存储于内存、MMX 寄存器和通用寄存器中的打包的字节、字、双字或四字的整数操作数。

MMX 指令只能在支持附录B IA-32指令简表·9·现代微机原理与接口技术·10·5. SSE指令SSE指令代表了和MMX技术一起介绍的SIMD执行模式的一个扩展。

SSE指令只能在支持SSE的IA-32处理器上执行。

SSE指令可分为四个部分:5.1 SSE SIMD单精度浮点指令这些指令可以处理存储于MMX寄存器和内存中的打包的分等级单精度浮点数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
① 只允许使用BX、BP、SI、DI 存放有效地址。则 MOV AX,[CX] 是一 条错误的指令。 ② 源操作数和目的操作数的长度必须一致,下面的例子中源操作数的有 效地址虽然都放在BX,但其代表的存储单元大小是不一样的。 例如: MOV DL, [ BX ] ;[BX]指示一个字节单元
MOV DX, [ BX ] ;[BX]指示一个字单元 ③ 间接寻址时,若有效地址存放在BX中,则默认的段寄存器为DS,由 于BX称为基址寄存器,所以这种寻址方式也叫数据段基址寻址。例如:
[标号:]操作符 目的操作数,源操作数[;注释] ① 目的操作数和源操作数应具有相同的类型,即必须同时为字节类型或 同时为字类型。 ② 目的操作数不能是立即数。 ③ 操作结束后,一般情况其运算结果送入目的地址中,而源操作数不发 生改变。 ④ 目的操作数和源操作数不能同时为存储器操作数。
“十二五”职业教育国家规划教材
1、复杂指令系统计算机(CISC,Complex Instruction Set Computer) 早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指 令来完成所需的计算任务。大量的复杂指令、可变的指令长度、多种 的寻址方式是CISC的特点,也是CISC的缺点
“十二五”职业教育国家规划教材
“十二五”职业教育国家规划教材
微机原理 (第五版)
3.1.3 寻址方式
MOV AX,[BX] 设DS=6000H,BX=3000H,则本指令在执行时,将63000H和 63001H两单元的内容送AX。 ④ 间接寻址时,若有效地址存放在BP中,则默认的段寄存器为SS,因为 BP称为基址寄存器,所以这种寻址方式通常称为堆栈段基址寻址。例如: MOV BX,[BP] 设SS=7000H,BP=1000H,则该指令在执行时,将71000H和71001H 两单元的内容送BX。 ⑤ SI和DI寄存器分别称为源变址寄存器和目的变址寄存器,所以用这两 个寄存器来进行间接寻址也叫变址寻址。
微机原理 (第五版)
3.1.2 指令格式
(2)单操作数指令格式为: [标号:]操作符 目的操作数
相应的操作规定为: ① 操作对象为目的地址中的操作数,操作结束后,其运算结果送入目的 地址中。 ② 操作数不能是立即数。
“十二五”职业教育国家规划教材
微机原理 (第五版)
3.1.3 寻址方式
寻址方式指的是在指令中寻找指令的操作数或操作数地址的方式。在
“十二五”职业教育国家规划教材
微机原理 (第五版)
第3章 IA-32微处理器指令系统简介 (目录)
▪ 3.4.2 汇编语言的语句类型 ▪ 3.4.3 汇编语言的语句结构 ▪ 3.4.4 汇编语言源程序的基本结构 ▪ 实战演练一 汇编程序设计基础 ▪ 实验1 汇编工具的使用 ▪ 实验2 循环程序设计 ▪ 实验3 分支程序设计
1、与数据有关的寻址方式
(1)立即寻址
操作数直接在指令中提供的寻址方式为立即寻址方式,指令中提供的 操作数也称作立即数。比如:MOV AL,80H ;
(2)寄存器寻址
操作数放在微处理器内部的寄存器中,在指令中直接指出寄存器的
名字。例如:
INC CX
;将CX的内容加1
“十二五”职业教育国家规划教材
微机原理 (第五版)
AH
AL
30
50
21060H
50
21061H
30
结果为:(AX)=3050H 图3.1直接寻址示例
“十二五”职业教育国家规划教材
微机原理 (第五版)
3.1.3 寻址方式
(4)寄存器间接寻址 有效地址由指令中的基址寄存器(BX或BP)或变址寄存器(SI或DI) 中给
出。 例如: MOV AX, [BX] ;PA = 10Hⅹ(DS) + (BX) 需要注意的是:
微机原理 (第五版)
3.1.1 指令系统分类
2、精简指令系统计算机(RISC,Reduced Instruction Set Computer) RISC体系结构的基本思路是:针对CISC指令系统指令种类太多、指
令格式不规范、寻址方式太多的缺点,通过减少指令种类、规范指令格 式和简化寻址方式,提高处理器内部的并行处理能力和VLSI器件的使用 效率,从而大幅度地提高处理器的性能。
“十二五”职业教育国家规划教材
微机原理 (第五版)
第3章 IA-32微处理器指令系统简介
3.1 指令系统概述 CPU依靠指令来计算和控制系统,每款CPU在设计时就规定了一系列 与其硬件电路相配合的指令系统。指令的强弱也是CPU的重要指标, 指令集是提高微处理器效率的最有效工具之一。
3.1.1 指令系统分类 从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两 部分。
“十二五”职业教育国家规划教材
微 机 原 理 (第五版)
孙杰 解统颜 米昶 编著
大连理工大学出版社
第3章 IA-32微处理器指令系统简介 (目录)
▪ 3.1 指令系统概述 ▪ 3.1.1 指令系统分类 ▪ 3.1.2 指令格式 ▪ 3.1.3 寻址方式 ▪ 3.2 IA-32指令系统简介 ▪ 3.2.1 基本通用指令 ▪ 3.2.2 x87FPU指令 ▪ 3.3 微处理器的指令系统的发展 ▪ 3.3.1 IA-32架构 ▪ 3.3.2 x86-64架构 ▪ 3.4 汇编语言程序的基本结构 ▪ 3.4.1 汇编语言的语句成分
3.1.3 寻址方式
(3)直接寻址
数据在存储器中,有效地址由指令直接给出。例如:
MOV AX,[1060H] ;其功能是将DS段的1060H和1061H两单 元的内容取到AX中。假设(DS)=2000H,那么存储单元的物理地址为 21060H,如图3.1所示,将该存储单元中的数据送到寄存器AX中。
8086~80286CPU中,与数据有关的寻址方式主要有:立即寻址、寄存器 寻址、直接寻址、寄存器间接寻址、基址变址寻址、寄存器相对寻址、 相对基址变址寻址等几种。在80386及更高级的微处理器中还包括带比例 因子的变址寻址和带比例因子的基址变址寻址方式。与程序转移地址有 关的寻址方式包括:直接寻址和间接寻址。
RISC指令集有许多特征,其中最重要的有: ▪ 指令种类少,指令格式规范 ▪ 寻址方式简化 ▪ 大量利用寄存器间操作 ▪ 简化处理器结构 ▪ 便于使用VLSI技术 ▪ 加强了处理器并行能力
“十二五”职业教育国家规划教材
微机原理 (第五版)
3.1.2 指令格式
对于早期的Intel 8086和80286来说,微处理器上运行的是16位指令系 统,2位指令 系统。 (1)双操作数指令格式为:
相关文档
最新文档