寄存器的物理地址的概述

合集下载

内存寻址的三种模式

内存寻址的三种模式

内存寻址的三种模型1. 地址的种类首先明确一下逻辑地址和线性地址这两个概念:1. 逻辑地址2. 线性地址3. 物理地址1.1 逻辑地址:逻辑地址是编译器生成的,我们使用在linux环境下,使用C语言指针时,指针的值就是逻辑地址。

对于每个进程而言,他们都有一样的进程地址空间,类似的逻辑地址,甚至很可能相同。

1.2 线性地址:线性地址是由分段机制将逻辑地址转化而来的,如果没有分段机制作用,那么程序的逻辑地址就是线性地址了。

1.3 物理地址物理地址是CPU在地址总线上发出的电平信号,要得到物理地址,必须要将逻辑地址经过分段,分页等机制转化而来。

2. 三种寻址模型x86体系结构下,使用的较多的内存寻址模型主要有三种:1. 实模式扁平模型real mode flat model2. 实模式分段模型real mode segment model3. 保护模式扁平模型protected mode flat model下面是对这三种模型的描述实模式和保护模式相对,实模式运行于20位地址总线,保护模式则启用了32位地址总线,地址使用的是虚拟地址,引入了描述符表;虽然二者都引入了段这样一个概念,但是实模式的段是64KB固定大小,只有16KB个不同的段,CS,DS等存储的是段的序号(想想为什么?)。

保护模式则引入了GDT和LDT段描述符表的数据结构来定义每个段。

扁平模型和分段模型相对,区别在于程序的线性地址是共享一个地址空间还是需要分成多个段,即为多个程序同时运行在同一个CS,DS的范围内还是每个程序都拥有自己的CS,DS:前者(flat)指令的逻辑地址要形成线性地址,不需要切换CS,DS;后者的逻辑地址,必须要经过段选择子去查找段描述符,切换CS,DS,才能形成线性地址。

3. 实模式扁平模型该模式只有在386及更高的处理器中才能出现!80386的实模式,就是指CPU可用的地址线只有20位,能寻址0~1MB的地址空间。

《汇编语言》寄存器物理地址(第二章第二节)

《汇编语言》寄存器物理地址(第二章第二节)

DS ES SS CS 地 址 加 法 IP 器 地 址 总 线 AB
本课件由汇编网()制作提供
物理地址PA = 段地址 + 偏移地址 = ( 段寄存器 ) × 10H + 偏移地址 或段寄存器的内容左移4位,加上偏移地址
例:某内存单元的段地址由DS、偏移地址由BX给出。
2.5 16位结构的CPU

概括的讲,16位结构描述了一个CPU具有 以下几个方面特征:

1、运算器一次最多可以处理16位的数据。 2、寄存器的最大宽度为16位。 3、寄存器和运算器之间的通路是16位的。


2.6 8086CPU给出物理地址的方法


8086有20位地址总线,可传送20 位地址,寻址能力为1M。 8086内部为16位结构,它只能传送 16位的地址,表现出的寻址能力却 只有64K。
2.7 “段地址×16+偏移地址=物理地址” 的本质含义

两个比喻说明:

说明“基础地址+偏移地址 = 物理地址” 的思想:第一个比喻 说明“段地址×16+偏移地址=物理地址” 的思想:第二个比喻 8086CPU就是这样一个只能提供两张3位 数据纸条的CPU。

2.8 段的概念

错误认识:

内存被划分成了一个一个的段,每一个 段有一个段地址。
通用寄存器
数据寄存器(AX,BX,CX,DX) 地址指针寄存器(SP,BP) 变址寄存器(SI,DI)
5
2.1 通用寄存器



8086CPU所有的寄存器都是16位的, 可以存放两个字节。 AX、BX、CX、DX 通常用来存放一般 性数据被称为通用寄存器。 下面以AX为例,我们看一下寄存器的 逻辑结构。

寄存器的工作原理

寄存器的工作原理

寄存器的工作原理
寄存器是计算机中的一种存储器件,用于暂时存放指令、数据和地址等信息。

它的主要工作原理如下:
1. 存储功能:寄存器可以存储二进制数值,通常以位(bit)
为单位。

不同的计算机体系结构有不同的寄存器位数,例如8位、16位、32位或64位等。

寄存器通过内部的触发器电路来
保存数值,这些触发器的状态在电路中通过稳定的电压和电流来维持,从而实现长期存储。

2. 数据传输:寄存器用于在计算机各个部件之间传输数据。

它可以接收来自内存、输入设备、输出设备和其他寄存器的数据,也可以将数据发送给这些部件。

数据传输可以通过总线实现,寄存器与总线之间的连接允许高速数据传输。

3. 寄存器与CPU的关系:寄存器是与中央处理器(CPU)紧
密关联的硬件部件。

CPU可直接访问寄存器,能够快速读取
和写入寄存器中的数据。

寄存器可用作暂存器,存储正在运算的操作数和结果,并能够快速执行各种算术和逻辑操作。

4. 寄存器的种类:计算机中存在多种类型的寄存器,如通用寄存器、程序计数器、指令寄存器、栈指针寄存器、标志寄存器等。

不同类型的寄存器用于不同的目的和任务,有助于提高计算机的性能和功能。

总之,寄存器在计算机中起着重要的作用,它们通过存储和传
输数据来支持计算机的运算和运行。

寄存器具有高速的读写能力,在计算机的各个部件之间承担着数据交流的重要角色。

微机原理第2章课后答案

微机原理第2章课后答案

第2章8086微处理器及其系统教材习题解答1. 8086 CPU 由哪两部分构成,它们的主要功能是什么?在执行指令期间,EU 能直接访问存储器吗,为什么?【解】8086CPU由执行部件(EU)和总线接口部件(BIU)两部分组成。

执行部件由内部寄存器组、算术逻辑运算单元(ALU)与标志寄存器(FR)及内部控制逻辑等三部分组成。

寄存器用于存储操作数和中间结果;算术逻辑单元完成16位或8位算术逻辑运算,运算结果送上ALU内部数据总线,同时在标志寄存器中建立相应的标志;内部控制逻辑电路的主要功能是从指令队列缓冲器中取出指令,对指令进行译码,并产生各种控制信号,控制各部件的协同工作以完成指令的执行过程。

总线接口部件(BIU)负责CPU与存储器、I/O设备之间传送数据、地址、状态及控制信息。

每当EU部件要执行一条指令时,它就从指令队列头部取出指令,后续指令自动向前推进。

EU要花几个时钟周期执行指令,指令执行中若需要访问内存或I/O设备,EU就向BIU 申请总线周期,若BIU总线空闲,则立即响应,若BIU正在取一条指令,则待取指令操作完成后再响应EU的总线请求。

2. 8086CPU与传统的计算机相比在执行指令方面有什么不同?这样的设计思想有什么优点?【解】8086 CPU与传统的计算机相比增加了指令队列缓冲器,从而实现了执行部件(EU)与总线接口(BIU)部件的并行工作,因而提高了8086系统的效率。

3. 8086 CPU 中有哪些寄存器,各有什么用途?【解】8086共有8个16位的内部寄存器,分为两组:①通用数据寄存器。

四个通用数据寄存器AX、BX、CX、DX均可用作16位寄存器也可用作8位寄存器。

用作8位寄存器时分别记为AH、AL、BH、BL、CH、CL、DH、DL。

AX(AH、AL)累加器。

有些指令约定以AX(或AL)为源或目的寄存器。

实际上大多数情况下,8086的所有通用寄存器均可充当累加器。

BX(BH、BL)基址寄存器。

微机原理第2章作业及答案

微机原理第2章作业及答案

第2章8086微处理器及其系统习题解答1. 8086 CPU 由哪两部分构成,它们的主要功能是什么在执行指令期间,EU 能直接访问存储器吗,为什么【解】8086CPU由执行部件(EU)和总线接口部件(BIU)两部分组成。

执行部件由内部寄存器组、算术逻辑运算单元(ALU)与标志寄存器(FR)及内部控制逻辑等三部分组成。

寄存器用于存储操作数和中间结果;算术逻辑单元完成16位或8位算术逻辑运算,运算结果送上ALU内部数据总线,同时在标志寄存器中建立相应的标志;内部控制逻辑电路的主要功能是从指令队列缓冲器中取出指令,对指令进行译码,并产生各种控制信号,控制各部件的协同工作以完成指令的执行过程。

总线接口部件(BIU)负责CPU与存储器、I/O设备之间传送数据、地址、状态及控制信息。

每当EU部件要执行一条指令时,它就从指令队列头部取出指令,后续指令自动向前推进。

EU要花几个时钟周期执行指令,指令执行中若需要访问内存或I/O设备,EU就向BIU 申请总线周期,若BIU总线空闲,则立即响应,若BIU正在取一条指令,则待取指令操作完成后再响应EU的总线请求。

2. 8086CPU与传统的计算机相比在执行指令方面有什么不同这样的设计思想有什么优点【解】8086 CPU与传统的计算机相比增加了指令队列缓冲器,从而实现了执行部件(EU)与总线接口(BIU)部件的并行工作,因而提高了8086系统的效率。

3. 8086 CPU 中有哪些寄存器,各有什么用途【解】8086共有8个16位的内部寄存器,分为两组:①通用数据寄存器。

四个通用数据寄存器AX、BX、CX、DX均可用作16位寄存器也可用作8位寄存器。

用作8位寄存器时分别记为AH、AL、BH、BL、CH、CL、DH、DL。

AX(AH、AL)累加器。

有些指令约定以AX(或AL)为源或目的寄存器。

实际上大多数情况下,8086的所有通用寄存器均可充当累加器。

BX(BH、BL)基址寄存器。

寄存器的物理地址的概述

寄存器的物理地址的概述

3.2.1 寄存器概述ARM微处理器有37个32位长的寄存器,其中包括30个通用寄存器,6个状态寄存器和一个程序计数器寄存器(PC)。

如图3.2所示,ARM微处理器中将这37个寄存器分成不同的组,在ARM微处理器的每种工作模式下只能使用其中一组寄存器。

我们知道,ARM微处理器共有7种模式,其中用户模式和系统模式拥有物理空间上完全相同的寄存器,而其它5种异常模式都有一些自己独立的寄存器。

从图上可以看出,在用户和系统模式下可以使用R0-R15和CPSR共17个寄存器;在FIQ模式下可以使用R0-R15,CPSR,CPSR共18个寄存器,其中R8-R14以及SPSR寄存器是FIQ模式专有寄存器,其它寄存器和用户模式共用相同的物理寄存器;在IRQ、SVC、Undef、Abort模式下可以使用的寄存器都是18个(R0-R15,CPSR,SPSR),其中R13,R14,CPSR是各个模式专有的,其它和用户模式共用相同的物理寄存器。

可见,ARM内核中一共有37个物理上独立的寄存器,在每一种处理器模式中只能访问一组相应的寄存器。

在每组寄存器中:R13通常用作栈指针寄存器(SP),每一种模式有自己的R13,所以允许每一种异常都有自己的栈指针。

R14用作连接或返回地址寄存器(LR),每一种模式有自己的R14。

R15用作程序计数器(PC),用来保存读取指令的地址。

CPSR (Current Program Status Register) 存储ARM微处理器当前的状态和模式标志。

SPSR (Saved Program Status Register)异常模式下的CPSR的备份寄存器,当一个异常发生时保存当前的CPSR值。

结合连接寄存器可使处理器返回先前的状态。

ARM微处理器这样组织寄存器的好处在于当各种异常发生的时候,每种异常模式都可以保存一些重要的数据,使异常处理程序完成之后返回异常前的程序时不会破坏原有的寄存器或状态。

8086CPU结构介绍及基础知识

8086CPU结构介绍及基础知识

分段管理的特点: ①起始点可浮动; ②可分开或重叠; ③实际地址由段地址、段内偏移地址组成; ④段首地址必须能被16整除
• 2、物理地址的形成
逻辑地址:存储器的任一个逻辑地址由段基址和偏移地址组成,程序设计时采 用。

段基址:偏移地址
物理地址:存储器的绝对地址,从00000~FFFFFH,它是由逻辑地址变换而来。
二、8086CPU的内部结构 8086CPU内部按功能可分为两部分: 1、BIU(总线接口部件) 功能:地址形成、取指令、指令排队、
读/写操作数、总线控制 2、EU(执行部件) 功能:指令译码、指令执行
组成部件见下页图
8086CPU的内部组成
执行单元(EU)
总线接口单元(BIU)
1、BIU ①段寄存器
例2-2
• 将5394H与-777FH两数相加,并说明其标志位状态

0101 0011 1001 0100
•+
1000 1000 1000 0001

1101 1100 0001 0101
• 运算结果:-23EBH
• 标志位:CF=0,DF=0,AF=0

ZF=0,SF=1,OF=0
控制标志位的名称和定义如下:
三寄存器结构目的变址寄存器destinationindexsidibpspax累加器accumulatorbx基数寄存器basecx计数寄存器countdx数据寄存器dataahbhchdhalblcldlipflagsdsessscs数据段寄存器datasegment附加段寄存器extrasegment堆栈段寄存器stacksegment代码段寄存器codesegment标志寄存器flags指令指针寄存器instructionpointer变址寄存器段寄存器控制寄存器通用寄存器源变址寄存器sourceindex基址指针寄存器basepointer堆栈指针寄存器stackpointer指针寄存器数据寄存器8086cpu寄存器组1通用寄存器组?常用来存放参与运算的操作数或运算结果?特殊用途见p25表212指针和变址寄存器?可作通用寄存器存放一般操作数或运算结果?作指针和变址寄存器用于存放某段地址偏移量3段寄存器?用于存放逻辑段的段基地址4指令指针和标志位寄存器?ip存放下一条指令在现行代码段中的偏移地址由biu自动修改

2 寄存器(CPU工作原理)

2 寄存器(CPU工作原理)

注:当所保存的数据位数大于寄存器的位数时,高位的 ADD AX,BX 8226H 2000H 数据会丢失,称为数据溢出。
MOV BX,AX
ADD AX,BX
8226H+8226H=1044CH
8226H 044CH
AX=?
8226H 8226H
7
程序段中的指令 AX中的数据 BX中的数据 MOV AX,001AH 001AH 0000H MOV BX,0026H 001AH 0026H 注:当通用寄存器作为8位寄存器使用时,低8位和高8位相当于 ADD AL,BL 0040H 0026H 两个独立的寄存器,它们之间没有直接关系,不能产生进位。 ADD AH,BL 2640H 0026H ADD BH,AL 2640H 4026H MOV AH,0 0040H 4026H ADD AX,93H AX=? ADD AL,85H 00C5H 4026H ADD AL,93H 0058H 4026H
BB 03 00
20009
2000A
add ax, bx
BB 03 00
执行控制器
25
CPU
内存
B8 23 地址加法器 01 BB 20008 03 00 地址 89 总线 D8 20006 01 20008 D8
89 D8 输入输出 数据 总线 控制电路 20000 20001 mov ax,0123H
mov bx,0003H
指令缓冲器
mov ax, bx
其他 部件
add ax, bx
执行控制器
23
CPU
内存
20000 20001 mov ax,0123H
B8 23 地址加法器 01 AX 0123 CS 2000 BB 20003 20000 03 BX IP 0000 0003 00 若当前CPU中的状态为: 地址 89 CS=2000,IP=0000 总线 D8 指令缓冲器 20000 B8 23 01 其他 01 20000 部件 20003 D8

第4章INTEL80X86系列微处理器习题参考答案

第4章INTEL80X86系列微处理器习题参考答案

第4章 Intel80X86系列微处理器习题解答 4.1 8086/8088内部寄存器有哪些?哪些属于通用寄存器?哪些用于存放段地址?标志寄存器的含义是什么?答:8086/8088内部有14个16位的寄存器。

位的寄存器。

88个通用寄存器AX AX、、BX BX、、CX CX、、DX DX、、SP SP、、BP BP、、SI SI、、DI DI。

4个16位的段寄存器CS CS、、DS DS、、SS SS、、ES ES,用于存放段地址。

标志寄存器,用于存放段地址。

标志寄存器FLAGS 用于存放指令执行结果的特征和CPU 工作方式,其内容通常称为处理器状态字PSW PSW。

4.2 对于8086/8088CPU ,确定以下运算的结果与标志位。

(1)5439H+456AH(2)2345H+5219H (3)54E3H-27A0H (4)3881H+3597H (5)5432H-6543H (6)9876H+1234H略。

4.3 8086/8088为什么要对存储器采用分段管理?一个段最多包含多少存储单元?答:8086/8088内部与地址有关的寄存器都是16位的,只能处理16位地址,对内存的直接寻址范围最大只能达64KB 64KB。

为了实现对。

为了实现对1MB 单元的寻址,单元的寻址,8086/80888086/8088系统采用了存储器分段技术。

一个段最多包含64K 个存储单元。

个存储单元。

4.4 8086/8088CPU 内部共有多少个段?分别称为什么段?段地址存放在哪些寄存器中?答:8086/8088 CPU 内部共有4个段。

分别称为代码段、数据段、堆栈段和附加段。

段地址存放在4个16位的段寄存器,位的段寄存器,CS CS 代码段寄存器、代码段寄存器、DS DS 数据段寄存器、数据段寄存器、SS SS 堆栈段寄存器、堆栈段寄存器、ES ES 附加段寄存器中。

附加段寄存器中。

4.5 简述物理地址、逻辑地址、段基地址和偏移量的含义及其相互关系。

DM9000寄存器功能详细介绍

DM9000寄存器功能详细介绍

DM9000寄存器功能详细介绍DM9000是一种高性能的以太网物理层和MAC层控制器,它被广泛应用于嵌入式系统中。

DM9000寄存器是DM9000芯片内部的一组寄存器,用于配置和控制DM9000的各种功能。

下面是对DM9000寄存器的详细介绍。

1. 基础寄存器(Basic Registers)基础寄存器用于设置DM9000的基本参数,包括芯片的供电和复位。

其中包括:-I/O数据寄存器(IOR):用于读取DM9000的寄存器-I/O地址寄存器(IAR):用于设置DM9000的寄存器地址-数据缓冲区寄存器(EAR):用于读取或写入数据-芯片复位寄存器(RST):用于对芯片进行复位2. 配置寄存器(Configuration Registers)配置寄存器用于配置DM9000的各种功能和工作模式。

其中包括:-网络控制寄存器(NCR):用于配置DM9000的网络功能,如启用或停用接收和发送功能-FIFO控制寄存器(FCR):用于配置DM9000的FIFO缓冲区,包括设置数据包的大小和启用/禁用DMA传输-每帧最大传送寄存器(TCR):用于设置DM9000允许的每帧最大传送字节数-接收滤波控制寄存器(RFCR):用于设置DM9000的接收滤波功能,包括MAC地址过滤和多播地址过滤3. 物理寄存器(Physical Registers)物理寄存器用于配置DM9000的物理层参数,包括速率、工作模式和物理地址。

其中包括:-启动寄存器(BSTCR):用于配置DM9000的启动参数,如工作速率和全双工/半双工模式-物理地址寄存器(PAR):用于设置DM9000的物理MAC地址-物理地址滤波寄存器(PADR):用于设置DM9000过滤的物理MAC地址4. 状态寄存器(Status Registers)状态寄存器用于监测DM9000的状态,包括PHY状态、接收和发送完成状态。

其中包括:-网络状态寄存器(NSR):用于监测DM9000的网络状态,包括PHY 状态和连接状态-接收状态寄存器(RSR):用于监测DM9000的接收状态,如接收完成和接收溢出-发送状态寄存器(TSR):用于监测DM9000的发送状态,如发送完成和发送冲突5. 中断寄存器(Interrupt Registers)中断寄存器用于配置和监控DM9000的中断功能。

寄存器的工作原理

寄存器的工作原理

寄存器的工作原理
寄存器是计算机中的一种数据存储器件,其主要功能是暂时存储和传输数据。

寄存器的工作原理如下:
1. 存储器结构:寄存器通常由多个存储单元组成,每个存储单元可以存储一个固定长度的数据,比如8位或16位。

这些存储单元按顺序排列,并且每个存储单元都有一个唯一的地址,用于访问其中的数据。

2. 数据存储:寄存器可以存储不同类型的数据,如整数、浮点数、指令等。

当需要存储数据时,数据会被放置到特定的寄存器中,并与其对应的地址关联起来。

3. 数据传输:计算机中的各个部件需要通过寄存器进行数据的传输。

数据可以从一个寄存器传输到另一个寄存器,或者从寄存器传输到其他部件,如算术逻辑单元、存储器等。

数据传输可以通过总线(如数据总线、地址总线)实现,每个寄存器都有与之相连的总线。

4. 寄存器操作:寄存器可以执行多种操作,如读取、写入、清零、复位等。

读操作将寄存器中的数据传输到其他部件,写操作将数据从其他部件传输到寄存器中并覆盖原有数据。

清零操作将寄存器中的内容设置为零,而复位操作将寄存器恢复到初始状态。

5. 寄存器的功能:由于寄存器具有高速读写和临时存储数据的能力,它在计算机中起着重要的作用。

寄存器常用于存储计算
过程中的中间结果、保存控制信号、暂存数据等。

不同类型的寄存器可以用于不同的目的,比如通用寄存器、程序计数器、指令寄存器等。

总之,寄存器是计算机中用于存储和传输数据的重要组成部分,通过寄存器可以实现数据的暂存、传输和操作等功能,为计算机的正常运行提供了必要的支持。

计算机组成原理4第四章存储器PPT课件精选全文

计算机组成原理4第四章存储器PPT课件精选全文

4.2
11
4.2
请问: 主机存储容量为4GB,按字节寻址,其地址线 位数应为多少位?数据线位数多少位? 按字寻址(16位为一个字),则地址线和数据线 各是多少根呢?
12
数据在主存中的存放
设存储字长为64位(8个字节),即一个存 取周期最多能够从主存读或写64位数据。
读写的数据有4种不同长度:
字节 半字 单字 双字
34
3. 动态 RAM 和静态 RAM 的比较
主存
DRAM
SRAM
存储原理
电容
触发器
集成度


芯片引脚


功耗


价格


速度


刷新


4.2
缓存
35
内容回顾: 半导体存储芯片的基本结构 4.2
…… ……










线



线



片选线
读/写控制线
地址线(单向) 数据线(双向) 芯片容量
D0
…… D 7
22
(2) 重合法(1K*1位重合法存储器芯片)
0 A4
0,00

0,31
0 A3
X 地
X0
32×32
… …
0址
矩阵
A2

0码
31,0

31,31
A1
器 X 31
0 A0
Y0 Y 地址译码器 Y31 A 9 0A 8 0A 7 0A 6 0A 5 0

龙芯 2G 处理器用户手册 上册 - 多核处理器架构、寄存器描述与系统软件编程指南说明书

龙芯 2G 处理器用户手册 上册 - 多核处理器架构、寄存器描述与系统软件编程指南说明书

龙芯2G处理器用户手册上册多核处理器架构、寄存器描述与系统软件编程指南2012年3月中国科学院计算技术研究所龙芯中科技术有限公司版权声明本文档版权归北京龙芯中科技术有限公司所有,并保留一切权利。

未经书面许可,任何公司和个人不得将此文档中的任何部分公开、转载或以其他方式散发给第三方。

否则,必将追究其法律责任。

免责声明本文档仅提供阶段性信息,所含内容可根据产品的实际情况随时更新,恕不另行通知。

如因文档使用不当造成的直接或间接损失,本公司不承担任何责任。

龙芯中科技术有限公司Loongson Technology Corporation Limited地址:北京市海淀区中关村科学院南路10号No.10 Kexueyuan South Road, Zhongguancun Haidian District, Beijing电话(Tel):************传真(Fax):************阅读指南本手册分为两部分,第一部分(第1章~第10章)介绍龙芯2G多核处理器架构与寄存器描述,对芯片系统架构、主要模块的功能与配置、寄存器列表及位域进行详细说明;第二部分(第11章~第16章)是系统软件编程指南,对BIOS和操作系统开发过程中的常见问题进行专题介绍。

关于龙芯2G多核芯片所集成的GS464高性能处理器核的相关资料,请参阅《龙芯GS464处理器核用户手册》。

IV修订历史目录图目录.......................................................................................................................... I V 表目录 (V)第一部分 (7)1 概述 (1)2 系统配置与控制 (3)2.1 控制引脚说明 (3)2.2 Cache一致性 (4)2.3 系统节点级的物理地址空间分布 (4)2.4 地址路由分布与配置 (6)2.5 芯片配置及采样寄存器 (11)3 GS464处理器核 (13)4 二级Cache (15)5 矩阵转置模块 (17)6 处理器核间中断与通信 (20)7 I/O中断 (22)8 DDR2/3 SDRAM控制器配置 (25)8.1 DDR2/3 SDRAM控制器功能概述 (25)8.2 DDR2/3 SDRAM读操作协议 (26)8.3 DDR2/3 SDRAM写操作协议 (26)8.4 DDR2/3 SDRAM参数配置格式 (27)9 HyperTransport控制器 (73)9.1 HyperTransport硬件设置及初始化 (73)9.2 HyperTransport协议支持 (74)9.3 HyperTransport中断支持 (76)9.4 HyperTransport地址窗口 (76)9.4.1 HyperTransport空间 (76)9.4.2 HyperTransport控制器内部窗口配置 (77)9.5 配置寄存器 (78)9.5.1 Bridge Control (80)9.5.2 Capability Registers (80)9.5.3 自定义寄存器 (82)9.5.4 接收地址窗口配置寄存器 (83)9.5.5 中断向量寄存器 (85)9.5.6 中断使能寄存器 (87)9.5.7 Interrupt Discovery & Configuration (88)9.5.8 POST地址窗口配置寄存器 (89)9.5.9 可预取地址窗口配置寄存器 (90)9.5.10 UNCACHE地址窗口配置寄存器 (91)9.5.11 HyperTransport总线配置空间的访问方法 (92)10 低速IO控制器配置 (94)10.1 LPC控制器 (94)10.2 UART控制器 (96)10.2.1 数据寄存器(DAT) (96)10.2.2 中断使能寄存器(IER) (96)10.2.3 中断标识寄存器(IIR) (97)10.2.4 FIFO控制寄存器(FCR) (98)10.2.5 线路控制寄存器(LCR) (98)10.2.6 MODEM控制寄存器(MCR) (100)10.2.7 线路状态寄存器(LSR) (100)10.2.8 MODEM状态寄存器(MSR) (102)10.2.9 分频锁存器 (102)10.3 SPI控制器 (103)10.3.1 控制寄存器(SPCR) (103)10.3.2 状态寄存器(SPSR) (104)10.3.3 数据寄存器(TxFIFO) (104)10.3.4 外部寄存器(SPER) (104)10.4 IO控制器配置 (106)第二部分 (110)11 中断的配置及使用 (111)11.1 中断的流程 (111)11.2 中断路由及中断使能 (111)11.2.1 中断路由 (112)11.2.2 中断使能 (114)11.3 中断分发 (115)12 串口的配置及使用 (117)12.1 可选择的串口 (117)12.2 PMON的串口配置 (117)12.3 Linux内核的串口配置 (118)13 EJTAG调试 (120)13.1 EJTAG介绍 (120)13.2 EJTAG工具使用 (121)13.2.1 环境准备 (121)13.2.2 PC采样 (121)13.2.3 读写内存 (121)13.2.4 执行说明 (121)14 地址窗口配置转换 (125)14.1 一二级交叉开关地址窗口配置方法 (125)14.2 一级交叉开关地址窗口 (125)14.3 一级交叉开关地址窗口配置时机 (127)14.4 二级交叉开关地址窗口 (127)14.5 对地址窗口配置的特别处理 (128)14.6 HyperTransport地址窗口 (129)14.6.1 处理器核对外访问地址窗口 (130)14.6.2 外部设备对处理器芯片内存DMA访问地址窗口 (131)14.6.3 低速设备地址窗口 (131)14.7 地址空间配置实例分析 (131)14.7.1 一级交叉开关实例1 (132)14.7.2 一级交叉开关实例2 (133)14.7.3 二级交叉开关实例1 (134)14.7.4 二级交叉开关实例2 (135)15 系统内存空间分布设计 (137)15.1 系统内存空间 (137)15.2 系统内存空间与外设DMA空间映射关系 (140)15.3 系统内存空间的其它映射方法 (141)16 X系统的内存分配 (142)龙芯2G处理器用户手册图目录图目录图1-1龙芯2G芯片结构 (1)图3-1 GS464结构图 (14)图7-1龙芯2G处理器中断路由示意图 (22)图8-1 DDR2 SDRAM行列地址与CPU物理地址的转换 (25)图8-2 DDR2 SDRAM读操作协议 (26)图8-3 DDR2 SDRAM写操作协议 (26)图9-1龙芯2号中HT协议的配置访问 (93)图11-1 2G-690e中断流程图 (111)图11-2 龙芯2G处理器中断路由示意图 (112)图13-1 EJTAG调试系统 (120)图16-1显卡处理图像显示的过程 (142)表目录表2-1 控制引脚说明 (3)表2-2 节点级的系统全局地址分布 (4)表2-3 节点内的地址分布 (5)表2-4 节点内的地址分布 (6)表2-5 一级交叉开关地址窗口寄存器表 (6)表2-6 2级XBAR处,标号与所述模块的对应关系 (9)表2-7 MMAP字段对应的该空间访问属性 (9)表2-8二级XBAR地址窗口转换寄存器表 (9)表2-9二级XBAR缺省地址配置 (10)表2-10芯片配置寄存器(物理地址0x1fe00180) (11)表2-11 芯片采样寄存器(物理地址0x1fe00190) (11)表4-1 二级Cache锁窗口寄存器配置 (15)表5-1 矩阵转置编程接口说明 (17)表5-2 矩阵转置寄存器地址说明 (18)表5-3 trans_ctrl寄存器的各位解释 (18)表5-4 trans_status寄存器的各位解释: (19)表6-1处理器核间中断相关的寄存器及其功能描述 (20)表6-2 0号处理器核核间中断与通信寄存器列表 (20)表6-3 1号处理器核的核间中断与通信寄存器列表 (20)表6-4 2号处理器核的核间中断与通信寄存器列表 (21)表6-5 3号处理器核的核间中断与通信寄存器列表 (21)表7-1中断控制寄存器 (23)表7-2 IO控制寄存器地址 (23)表7-3中断路由寄存器的说明 (23)表7-4中断路由寄存器地址 (24)表8-1 DDR2 SDRAM配置参数寄存器格式 (27)表9-1 H yperTransport总线相关引脚信号 (73)表9-2 HyperTransport接收端可接收的命令 (75)表9-3 两种模式下会向外发送的命令 (75)表9-4 默认的HyperTransport地址窗口的地址 (76)表9-5 龙芯2G处理器HyperTransport接口地址窗口分布 (77)表9-6龙芯2号处理器HyperTransport接口中提供的地址窗口 (77)表9-7本模块中所有软件可见寄存器 (78)表10-1 LPC控制器地址空间分布 (94)表10-2 LPC配置寄存器含义 (95)表10-3 IO控制寄存器 (106)表10-4寄存器详细描述 (107)表11-1中断路由寄存器的说明 (112)表11-2中断路由寄存器地址 (113)表11-3中断控制位连接及属性配置 (114)表14-1 【请给出表头】 (126)表14-2 【请补充表头】 (127)第一部分多核处理器架构、寄存器描述1概述龙芯2G是一个3-4核的处理器,采用65nm工艺制造,最高工作频率为1GHz,主要技术特征如下:•片内集成3-4个64位的四发射超标量GS464高性能处理器核;•片内集成4 MB的分体共享二级Cache(由4个体模块组成,每个体模块容量为1MB) ;•通过目录协议维护多核及I/O DMA访问的Cache一致性;•片内集成2个64位400MHz的DDR2/3控制器;•片内集成1个16位800MHz的HyperTransport控制器;•片内集成1个LPC、2个UART、1个SPI、16路GPIO接口;龙芯2G芯片整体架构基于两级互连实现,结构如图1-1所示。

第三讲2 操作数的寻址方式

第三讲2 操作数的寻址方式
假设数据段的段地址DS=1500H,(15200H)字单元的值是876AH,问执行指 令后,相关寄存器及存储单元的值是什么? 答: EA=200H PA=(DS)*16+EA=15000H+200H=15200H MOV AX, 目的操作数 寄存器寻址 [200H] 源操作数 直接寻址
AH
已知 DS=1500H
36000H
78 56
56 78 AX
5.变址寻址
操作数的EA SI/DI变址寄存器的内容 变址寄存器的内容+ 操作数的EA = SI/DI变址寄存器的内容+指令中给出位移量 SORNT DB 40H,00H … MOV SI, OFFSET SORNT MOV BL, [SI+100H]
基址寻址
间接端口寻址16位 间接端口寻址 位 地址由DX提供可访 地址由 提供可访 问64K个端口 个端口
8086的寻址方式
1、 立即寻址方式
操作数直接包含在指令码中
MOV SI, 4A3CH SI
4A 3C 以IP为指针 为指针 取指令 M
BE 3C 4A
指令队列 (BIU)
BE 3C 4A
指令存放 在存储器中
2、 直接寻址
直接寻址方式是指操作数的偏移地址在指令中直接给出。
例如: 的字送入AX 例如:MOV AX,[200H];将数据段中偏移地址为 , ;将数据段中偏移地址为200H的字送入 的字送入
该指令执行之前,DS=2000H,AX=54C8H,BX=0300H, 存储单元20300H的内容是6A9BH。 问:执行指令后,相关寄存器及存储单元的值是什么? 源操作数的地址为: EA=(BX)= 0300H PA=(DS)*16+EA=2000H*16+0300H=20300H MOV BX, [SI] BX 31 8B DS 1000 0 SI 200 0 1200 0 12000 8B 31 8B 1C } 操作码

微机原理与接口技术课后答案第二版

微机原理与接口技术课后答案第二版

微机原理与接口技术课后答案第二版微机原理与接口技术课后答案第二版【篇一:《微机原理与接口技术》(第二版)龚尚福-习题解析和实验指导】xt>2.2 8086微处理器由哪几部分组成?各部分的功能是什么?16355【解】:按功能可分为两部分:总线接口单元biu(bus interface unit)和执行单元eu(execution unit)。

总线接口单元biu是8086 cpu在存储器和i/o设备之间的接口部件,负责对全部引脚的操作,即8086对存储器和i/o设备的所有操作都是由biu完成的。

所有对外部总线的操作都必须有正确的地址和适当的控制信号,biu中的各部件主要是围绕这个目标设计的。

它提供了16位双向数据总线、20位地址总线和若干条控制总线。

其具体任务是:负责从内存单元中预取指令,并将它们送到指令队列缓冲器暂存。

cpu执行指令时,总线接口单元要配合执行单元,从指定的内存单元或i/o端口中取出数据传送给执行单元,或者把执行单元的处理结果传送到指定的内存单元或i/o端口中。

执行单元eu中包含1个16位的运算器alu、8个16位的寄存器、1个16位标志寄存器fr、1个运算暂存器和执行单元的控制电路。

这个单元进行所有指令的解释和执行,同时管理上述有关的寄存器。

eu对指令的执行是从取指令操作码开始的,它从总线接口单元的指令队列缓冲器中每次取一个字节。

如果指令队列缓冲器中是空的,那么eu就要等待biu通过外部总线从存储器中取得指令并送到eu,通过译码电路分析,发出相应控制命令,控制alu数据总线中数据的流向。

2.3 简述8086 cpu的寄存器组织。

【解】:(1)通用寄存器:通用寄存器又称数据寄存器,既可作为16位数据寄存器使用,也可作为两个8位数据寄存器使用。

当用作16位时,称为ax、bx、cx、dx。

当用作8位时,ah、bh、ch、dh 存放高字节,al、bl、cl、dl存放低字节,并且可独立寻址。

寄存器的工作原理

寄存器的工作原理

寄存器的工作原理寄存器是计算机中的一种重要的数据存储设备,用于暂时存储和处理数据。

它是由一组触发器或者存储单元组成的,每一个存储单元可以存储一个固定大小的数据。

工作原理:1. 数据存储:寄存器可以存储二进制数据,每一个存储单元可以存储一个位或者多个位的数据。

寄存器的位数决定了它可以存储的数据的范围。

例如,一个8位寄存器可以存储从00000000到11111111的256个不同的数值。

2. 数据传输:寄存器可以接收数据从其他寄存器或者外部设备传输过来,并且可以将数据传输给其他寄存器或者外部设备。

数据传输可以通过数据总线进行,其中数据总线是连接计算机内部各个组件的通信通道。

3. 数据处理:寄存器可以对存储的数据进行各种操作,例如加法、减法、逻辑运算等。

这些操作可以通过计算机的指令来控制,指令可以告诉寄存器要执行的操作以及操作的数据。

4. 寄存器的读写:寄存器可以被读取和写入数据。

读取操作可以将寄存器中的数据传输给其他寄存器或者外部设备,写入操作可以将数据传输到寄存器中进行存储。

5. 寄存器的地址:每一个寄存器都有一个惟一的地址,用于标识寄存器在计算机内存中的位置。

通过地址,计算机可以访问和操作寄存器中的数据。

6. 寄存器的类型:计算机中有多种类型的寄存器,包括通用寄存器、程序计数器、指令寄存器等。

不同类型的寄存器用于不同的目的,例如通用寄存器用于存储暂时数据,程序计数器用于存储下一条要执行的指令的地址。

7. 寄存器的作用:寄存器在计算机中扮演着暂时存储和处理数据的角色,是计算机运算和控制的重要组成部份。

寄存器的快速读写速度和高效的数据处理能力,使得计算机能够高效地执行各种任务。

总结:寄存器是计算机中的一种重要的数据存储设备,用于暂时存储和处理数据。

它的工作原理包括数据存储、数据传输、数据处理、读写操作、地址标识、类型分类和多样化的作用。

寄存器的工作原理对于理解计算机的内部运行机制和数据处理过程非常重要。

物理寻址和功能寻址

物理寻址和功能寻址

物理寻址和功能寻址物理寻址和功能寻址是计算机系统中常用的两种寻址方式,用于访问内存中的数据和指令。

物理寻址是指直接使用物理地址进行寻址,而功能寻址是通过使用不同寄存器和寄存器组合的方式进行寻址。

下面将对这两种寻址方式进行详细介绍。

物理寻址是计算机系统中最基本的寻址方式。

在物理寻址中,每个内存单元都有一个唯一的物理地址,操作系统和应用程序可以通过直接访问这些地址来读写内存中的数据和指令。

物理寻址适用于单处理器系统,其运行原理简单、快速,能够直接定位到内存中的指定位置。

然而,在多道程序环境中,由于物理地址空间被多个进程共享,因此需要设置一些硬件和软件机制来确保每个进程都能在自己的地址空间中进行有效的寻址和访问。

功能寻址是通过使用不同寄存器和寄存器组合的方式进行寻址。

在计算机系统中,有一些寄存器用于存放指令执行过程中的中间结果或者临时数据。

功能寻址就是通过对这些寄存器进行操作来进行寻址。

在功能寻址中,寄存器的编号和指定的操作数被编码到指令中,然后根据指令中的寄存器编号来访问相应的寄存器,从而完成寻址过程。

功能寻址适用于多处理器系统,可以灵活地使用不同寄存器来实现指令的寻址和访问,能够提高系统的并行性和执行效率。

物理寻址和功能寻址各有其优缺点。

物理寻址简单快速,但在多道程序环境中需要设置额外的硬件和软件机制来管理地址空间的共享问题;功能寻址灵活方便,能够灵活地使用不同的寄存器组合来实现指令的寻址和访问,但需要更多的指令和寄存器来实现寻址,增加了程序的复杂度。

综上所述,物理寻址和功能寻址是计算机系统中常用的两种寻址方式。

物理寻址通过直接使用物理地址进行寻址,适用于单处理器系统;功能寻址通过使用不同寄存器和寄存器组合的方式进行寻址,适用于多处理器系统。

这两种寻址方式各有其优缺点,可以根据具体的应用场景来选择合适的寻址方式。

七种寻址方式(寄存器间接寻址方式)

七种寻址方式(寄存器间接寻址方式)

七种寻址⽅式(寄存器间接寻址⽅式)
操作数在存储器中,操作数的有效地址⽤SI、DI、BX和BP等四个寄存器之⼀来指定,称这种寻址⽅式为寄存器间接寻址⽅式。

该寻址⽅式物理地址的计算⽅法如下:
寄存器间接寻址⽅式读取存储单元的原理如图所⽰。

在不使⽤段超越前缀的情况下,有下列规定:
若有效地址⽤SI、DI和BX等之⼀来指定,则其缺省的段寄存器为DS;
若有效地址⽤BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。

例:假设有指令:MOV BX,[DI],在执⾏时,(DS)=1000H,(DI)=2345H,存储单元12345H的内容是4354H。

问执⾏指令后,BX的值是什么?
解:根据寄存器间接寻址⽅式的规则,在执⾏本例指令时,寄存器DI的值不是操作数,⽽是操作数的地址。

该操作数的物理地址应由DS和DI的值形成,即:
PA=(DS)*16+DI=1000H*16+2345H=12345H。

所以,该指令的执⾏效果是:把从物理地址为12345H开始的⼀个字的值传送给BX。

其执⾏过程如图所⽰。

寄存器的工作原理 (2)

寄存器的工作原理 (2)

寄存器的工作原理引言概述:寄存器是计算机中的一种存储设备,用于暂时存储指令、数据和地址等信息。

它在计算机系统中扮演着重要的角色,直接影响着计算机的性能和运行速度。

本文将详细介绍寄存器的工作原理,包括其基本概念、功能和工作方式。

一、寄存器的基本概念1.1 寄存器的定义寄存器是计算机中的一种存储单元,用于存储指令、数据和地址等信息。

它通常由一组存储单元组成,每一个存储单元可以存储一个数据元素,如一个字节或者一个字。

1.2 寄存器的种类在计算机中,常见的寄存器包括通用寄存器、特殊寄存器和控制寄存器等。

通用寄存器用于存储暂时数据和运算结果,特殊寄存器用于存储特定的信息,如程序计数器和状态寄存器,控制寄存器用于控制计算机的运行状态。

1.3 寄存器的作用寄存器的主要作用是暂时存储数据和指令,以便计算机能够快速访问和处理这些信息。

通过寄存器,计算机可以实现数据的传递、运算和控制等功能。

二、寄存器的功能2.1 数据传递寄存器可以用来传递数据,将数据从一个存储单元传送到另一个存储单元。

通过寄存器,计算机可以实现数据的加载、存储和传输等操作。

2.2 运算处理寄存器可以用来存储运算数和运算结果,进行算术和逻辑运算。

计算机通过寄存器实现算术运算、逻辑运算和位操作等功能。

2.3 控制指令寄存器可以存储指令和地址信息,用于控制计算机的运行状态。

通过寄存器,计算机可以实现程序的跳转、分支和循环等控制指令。

三、寄存器的工作方式3.1 寄存器的访问计算机通过地址总线和数据总线来访问寄存器中的数据。

当计算机需要读取或者写入寄存器中的数据时,会通过地址总线传送地址信息,通过数据总线传送数据信息。

3.2 寄存器的读写寄存器的读写操作是通过控制信号来实现的。

当计算机需要从寄存器中读取数据时,会发送读取信号,将数据从寄存器中传送到数据总线上;当计算机需要向寄存器中写入数据时,会发送写入信号,将数据从数据总线写入到寄存器中。

3.3 寄存器的工作时钟寄存器的读写操作通常是在时钟信号的控制下进行的。

合工大微机原理周国祥第二章思考题答案

合工大微机原理周国祥第二章思考题答案

1.8086/8088 CPU由哪两部分组成?它们的主要功能各是什么?它们之间是如何协调工作的?解:8086的内部结构由两部分组成:总线接口部件BIU,负责与存储器、I/O端口传送数据执行部件EU, 负责指令的执行。

协调工作过程:总线接口部件和执行部件并不是同步工作的,它们按以下流水线技术原则来协调管理:①每当 8086 的指令队列中有两个空字节,或者 8088 的指令队列中有一个空字节时,总线接口部件就会自动把指令取到指令队列中。

②每当执行部件准备执行一条指令时,它会从总线接口部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令。

在执行指令的过程中,如果必须访问存储器或者输入/输出设备,那么,执行部件就会请求总线接口部件进入总线周期,完成访问内存或者输入/输出端口的操作;如果此时总线接口部件正好处于空闲状态,那么,会立即响应执行部件的总线请求。

但有时会遇到这样的情况,执行部件请求总线接口部件访问总线时,总线接口部件正在将某个指令字节取到指令队列中,此时总线接口部件将首先完成这个取指令的操作,然后再去响应执行部件发出的访问总线的请求。

③当指令队列已满,而且执行部件又没有总线访问请求时,总线接口部件便进入空闲状态。

④在执行转移指令、调用指令和返回指令时,由于程序执行的顺序发生了改变,不再是顺序执行下面一条指令,这时,指令队列中已经按顺序装入的字节就没用了。

遇到这种情况,指令队列中的原有内容将被自动消除,总线接口部件会按转移位置往指令队列装入另一个程序段中的指令。

2.8086/8088 CPU中有哪些寄存器?各有什么用途?标志寄存器F有哪些标志位?各在什么情况下置位?解答:标志寄存器F的标志位:①控制标志:OF、DF、IF、TF;②状态标志:SF、ZF、AF、PF、CF。

标志寄存器F的各标志位置位情况:· CF:进位标志位。

做加法时出现进位或做减法时出现借位,该标志位置1;否则清0。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.2.1 寄存器概述
ARM微处理器有37个32位长的寄存器,其中包括30个通用寄存器,6个状态寄存器和一个程序计数器寄存器(PC)。

如图3.2所示,ARM微处理器中将这37个寄存器分成不同的组,在ARM微处理器的每种工作模式下只能使用其中一组寄存器。

我们知道,ARM微处理器共有7种模式,其中用户模式和系统模式拥有物理空间上完全相同的寄存器,而其它5种异常模式都有一些自己独立的寄存器。

从图上可以看出,在用户和系统模式下可以使用R0-R15和CPSR共17个寄存器;在FIQ模式下可以使用R0-R15,CPSR,CPSR共18个寄存器,其中R8-R14以及SPSR寄存器是FIQ模式专有寄存器,其它寄存器和用户模式共用相同的物理寄存器;在IRQ、SVC、Undef、Abort模式下可以使用的寄存器都是18个(R0-R15,CPSR,SPSR),其中R13,R14,CPSR是各个模式专有的,其它和用户模式共用相同的物理寄存器。

可见,ARM内核中一共有37个物理上独立的寄存器,在每一种处理器模式中只能访问一组相应的寄存器。

在每组寄存器中:
R13通常用作栈指针寄存器(SP),每一种模式有自己的R13,所以允许每一种异常都有自己的栈指针。

R14用作连接或返回地址寄存器(LR),每一种模式有自己的R14。

R15用作程序计数器(PC),用来保存读取指令的地址。

CPSR (Current Program Status Register) 存储ARM微处理器当前的状态和模式标志。

SPSR (Saved Program Status Register)异常模式下的CPSR的备份寄存器,当一个异常发生时保存当前的CPSR值。

结合连接寄存器可使处理器返回先前的状态。

ARM微处理器这样组织寄存器的好处在于当各种异常发生的时候,每种异常模式都可以保存一些重要的数据,使异常处理程序完成之后返回异常前的程序时不会破坏原有的寄存器或状态。

3.2.2 通用寄存器
通用寄存器包括:未分组寄存器(R0-R7)、分组寄存器(R8-R14)、程序计数器PC(R15)。

(1)未分组寄存器(R0-R7)
在ARM微处理器中寄存器R0-R7是未分组的,在图3.2中我们也看到,R0-R7在物理上只有一组,任何模式下使用R0-R7寄存器指的都是同一个R0-R7物理寄存器。

未分组寄存器没有被系统用于特殊的用途,任何可使用通用寄存器的应用场合都可以使用未分组寄存器。

在异常中断所引起的处理器模式切换时,要对未分组寄存器加以保护(入栈)以防止破坏寄存器中的数据。

R0-R7在Thumb 状态下也称为低组寄存器,R8-R15在Thumb状态下也称为高组寄存器。

(2)分组寄存器(R8-R14)
R8-R14是分组寄存器,具体访问哪个物理寄存器取决于当前的处理器模式。

R8-R12这组寄存器物理上有两组,FIQ模式下使用自己专有的R8-R12,而其他模式使用同一组R8-R12寄存器。

这样的结构设计有利于加快FIQ的处理速度。

在ARM体系结构中,R8-R12没有任何指定的其他的用途,所以当FIQ中断到达时,可以不保存这些通用寄存器,也就是说FIQ处理程序在保存和恢复现场时可以少保存和恢复几个寄存器(R8-R12),从而提高中断处理迅速。

因此FIQ模式常被用来处理一些时间紧急的任务。

分组寄存器R13和R14,分别对应6个不同的物理寄存器。

其中用户模式和系统模式共用一个,5中异常模式中分别有自己的R13和R14。

也就是IRQ下的R13、R14与用户模式或其他4种异常模式下的R13、R14是不同的物理寄存器。

R13寄存器在ARM中常用作栈指针,称为SP。

因为ARM状态下没有专门的入栈和出栈指令,所以这只是一种习惯用法。

也就是,并没有任何ARM指令强制使用R13作为栈指针,用户可以使用其他寄存器作为栈指针。

每一种异常模式都有自己的R13,在使用是要分别对其进行初始化,以保证在相应模式下能正确的进行入栈和出栈操作。

另外需要注意,在Thumb指令集中,有一些指令强制使用R13作为栈指针,如栈操作指令。

R13也可以作为通用寄存器使用。

R14寄存器又被称为连接寄存器(Link Register,LR),在ARM体系结构中R14的特殊用途有两种:一是用来保存子程序返回地址;二是当异常发生时,R14中保存的值等于异常发生时PC的值减4(或者减2),因此在各种异常模式下可以根据R14的值返回到异常发生前的相应位置继续执行。

当通过BL或BLX指令调用子程序时,硬件自动将子程序返回地址保存在R14寄存器中。

在子程序返回时,把R14的值复制到程序计数器PC即可实现子程序返回。

如,可以使用MOV PC, LR或者BX LR来完成子程序返回。

另外,也可以在在子程序入口处使用下面的指令将LR保存到栈中。

STMFD SP!, {,LR}
在子程序返回时,使用如下相应的指令做出栈操作,实现从子程序返回。

LDMFD SP!, {,PC}
R14还用于从异常返回。

当异常发生时,该异常模式的寄存器R14被设置成该异常模式的返回地址(R14等于异常放生时PC的值减4(或者减2))。

在不同异常模式下,R14保存的值并不是异常返回的真正地址,而是有一个常数的偏移量。

例如:FIQ异常可以使用SUBS PC, LR, #4实现异常返回。

R14也可以作为通用寄存器使用。

(3)程序计数器(R15)
ARM的寄存器R15被用为程序计算器PC。

R15可以作为通用寄存器使用,但很多特殊的指令在使用R15时有些限制。

当违反了这些指令的使用限制时,指令的执行结果是不可预知的。

R15保存微
处理器取指的地址,改变R15的值会引起程序执行顺序的改变。

在ARM状态下,ARM指令是32位的、是按字对齐的,所以R15[1:0]=0;在Thumb状态下,Thumb 指令是16位的、按2字节对齐的,所以R15[0]=0。

由于ARM的流水线机制,指令读取的R15的值是当前正在执行的指令地址加上8个字节。

读PC 主要用于快速地对临近的指令或数据进行位置无关寻址,包括程序中的位置无关分支。

需要注意的是,当使用指令STR或STM对R15进行保存时,保存的可能是当前指令地址加8或当前指令地址加12。

到底是哪种方式,取决于芯片的具体设计方式。

当然,在同一个芯片中,只能采用一种方式。

要么保存当前指令地址加8,要么保存当前指令地址加12。

程序开发人员应尽量避免使用STR或STM指令来对R15进行操作。

当不可避免要使用这种方式时,可以先通过一小段程序来确定所使用的芯片是使用哪种方式实现的。

例如:
SUB R1,PC, #4 ;R1中存放STR指令地址
STR PC,[R0] ;用STR指令将PC保存到R0指向的地址单元中,
;PC=STR指令地址+偏移量(偏移量为8或者12)。

LDR R0,[R0] ;读取STR指令地址+偏移量的值
SUB R0,R0,R1 ; STR指令地址+偏移量的值减去STR指令的地址,
;得到偏移量值(8或者12)。

当用指令修改R15的值时,如果修改成功,它将使程序跳转到该地址执行。

因为ARM指令是字对齐的,所以写入R15的地址值应满足BIT[1:0]=0b00,具体的规则根据ARM版本的不同也有所不同:l 对于ARM版本3以及更低的版本,写入R15的地址值bit[1:0]被忽略,即写入R15的地址值将与0xFFFFFFFC做与操作。

l 对于ARM版本4以及更高的版本,程序必须保证写入R15寄存器的地址值的bit[1:0]为0b00,否则将会产生不可预知的结果。

l 对于Thumb指令集来说,指令是半字对齐的。

处理器将忽略R15[0],即写入R15寄存器的值在写入前要先和0XFFFFFFFE做与操作。

有些指令对R15的操作有特殊的要求。

比如,指令BX利用寄存器BIT[0]来确定需要跳转到的子程序是ARM状态还是Thumb状态。

原文:/User/fenghua/Article/17414_1.htm。

相关文档
最新文档