精华内容
下载资源
问答
  • 动态寄存器
    2021-04-22 11:47:59

    首先介绍我们会经常看到的一些寄存器:
    4个数据寄存器(EAX、EBX、ECX和EDX)
    2个变址和指针寄存器(ESI和EDI)
    2个指针寄存器(ESP和EBP)


    4个数据寄存器(EAX、EBX、ECX和EDX):
    32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。对低16位数据的存取,不会影响高16位的数据。这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。
    4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。

    那么如何理解eax,ax,al(ah)之间的关系呢?
    专业点可以这样解释:Eax是32位寄存器,ax是16位寄存器,al(ah)是八位寄存器。
    那么eax存储的数据就是ax的两倍,ax是al(ah)的两倍。
    Eax可以存储的数字是DWORD(双字)ax存储的是WORD(字)AL(AH)存储的是BYTE(字节),那么为什么又有AH和AL呢,我们可以这样理解,AX=AH+AL,AH存储的是AX的高8位数据,AL存储的是AX的低八位数据。H这里就是HIGH,L就是LOW.
    假设eax是红色区域,那么eax现在就是64636261;
    那么ax就是eax的低十六位,也就是6261;
    Al是61;AH是62。



    其他ebx,ecx,edx也有类似的bx,bl,bh等对应的寄存器,原理和上面相同。

    在用途方面,他们有各自默认的用途:
    Eax用来保存所有API函数的返回值。
    寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。累加器可用于乘、除、输入/输出等操作,它们的使用频率很高;
    寄存器BX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 
    寄存器CX称为计数寄存器(Count Register)。在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;
    寄存器DX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。

    由于存储的数据大小关系,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址, 32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。(什么是基址,什么是变址以后会说到)

    2个变址和指针寄存器(ESI和EDI)
    32位CPU有2个32位通用寄存器ESI和EDI。其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。

    寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。
    变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。

    2个重要的指针寄存器(ESP和EBP)


    这两个指针寄存器都和“栈”这个神秘的东东有关,那么什么是栈呢?这俩指针寄存器又有何作用呢?


    从计算机科学的角度看,栈是一种数据结构,是一种先进后出的数据表。栈的最常见操作有两种:Push(入栈)和Pop(出栈)。


    我们可以把栈想象成一摞扑克牌:
    PUSH:为栈增加一个元素的操作是push,相当于在这摞扑克牌最上面再放一张

    POP:从栈中取出一个元素的操作叫做POP,相当于从这摞扑克牌取出最上面的一

    张。

    TOP:标识栈顶位置,并且是动态变化的。每做一次PUSH 操作,它都会自增1;

    相反,每做一次POP 操作,它会自减1。栈顶元素相当于扑克牌最上面一张,只有


    这张牌的花色是当前可以看到的。

    BASE:标识栈底位置,它记录着扑克牌最下面一张的位置。BASE 用于防止栈空后

    继续弹栈(牌发完时就不能再去揭牌了)。很明显,一般情况下,BASE 是不会变动


    的。
     

    用王爽《汇编语言》中的图说明一下push和pop操作
    代码如下:
    mov ax,0123H
    push ax
    mov bx,2266H
    push bx
    mov cx,1122H
    pop ax
    pop bx
    pop cx

    mov是传送数据的指令,mov ax,0123H表明把0123H这个值给ax
    H代表0123是十六进制数

     



    mov是传送数据的指令,mov ax,0123H表明把0123H这个值给ax
    H代表0123是十六进制数
    图中左边的10000H等数值表明内存地址
    箭头指向栈顶位置

     

    那么针对此例栈底就是1000FH
    栈顶由于入栈和出栈操作在不断变化。

    那么在这里栈底1000FH就是BP 栈顶(不断变化的箭头)就是SP
    (BP和SP分别是16位下的寄存器,与ebp,esp类似)

    内存的栈区实际上指的就是系统栈。系统栈由系统自动维护,它用于实现高级语言中函

    数的调用。对于类似C 语言这样的高级语言,我们无需担心他们是如何操作的。一般说来,只有在使用汇编语言的时候,才需要和它直接打交道。

    那么ESP和EBP指的分别是什么呢?

    (1)ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。
    (2)EBP:基址指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。

    更多相关内容
  • 行业-电子政务-快速动态寄存器、寄存方法、集成电路.zip
  • 微处理器内部结构(寄存器)

    千次阅读 2019-04-18 19:59:19
    MOV AL ,10 将10放入AL(8位)寄存器 MOV [2000H] AL 将AL内容写入地址2000H的地址单元中去 地址加[] MOV AL 10 MOV BX 2000H 将被操作的存储单元的地址存到BX寄存器中 MOV [BX],AL 将AL内容放到BX地址的存储器...
    MOV指令寻址方式
    • MOV AL ,10 将10放入AL(8位)寄存器

    • MOV [2000H] AL 将AL内容写入地址2000H的地址单元中去 地址加[]

    • MOV AL 10

      MOV BX 2000H 将被操作的存储单元的地址存到BX寄存器中

      MOV [BX],AL 将AL内容放到BX地址的存储器单元中

    对端口的读写 in out 指令 ,并且指令间接寻址是不用中括号

    微处理器的内部结构
    1. ALU 
    
    2. 寄存器(数据寄存器 地址寄存器(也可暂存数据))  
    
    3. 控制器 
        取指令>指令寄存器>译码 
    4. IO控制逻辑
    

    控制器逻辑图:
    image

    堆栈:由先进先出形式组织的一段内存区域

    8086必须按字操作
    image

    pop BX 将栈顶单元的字给BX,这是单指令

    8086与8088处理器的内部结构

    8086如何解决取一条指令执行一条指令的效率问题

    内部结构

    image

    BLU:总线接口单元

    8086:
    指令队列RZG寄存器(6个字节)

    BIU主要功能:从外部存储器中取指令,并将取回的指令放入指令队列中

    停止条件:
    1. EU要使用总线
    2. 指令队列取满

    EU:执行部件

    功能:主要负责从指令队列中获取指令,并对获取的该指令进行译码分析
    停止条件:指令队列为空

    提高了总线利用率,提高了指令执行的效率

    寄存器组织:
     共有14个16位寄存器
    1. 数据寄存器(4个)
    除了存数据还有其他特殊功能
    
    AHAL(8位累加器)AX(累加器)
    BHBL()BX (基址寄存器(提供的偏移地址默认在数据段))
    CHCLCX(循环计数器)
    DHDLDX(数据寄存器)(I/O端口地址寄存器)
    2. 地址指针寄存器和变址寄存器
    

    image

    sp  >>  堆栈指针寄存器
    BP  >>  地址指针寄存器(默认指向堆栈指针寄存器)
    SI  >>源变址寄存器(默认DS段单元)
    DI  >>目的变址寄存器(默认DS段的单元)
    变址:为了提高字符串搬家的效率
    

    image

    3.段寄存器
    CS >>   代码段寄存器(程序代码所在的逻辑段的段地址)
    DS >>数据段寄存器
    ES >> 附加数据段寄存器
    SS >>堆栈段寄存器
    

    MOV CS AL X 用户不能操作,系统自动进行生成

    4.控制寄存器(2个)
    IP - 指令指针寄存器(IP提供要取址的代码段的偏移地址)
    在八位CPU中不分段,IP就相当于程序计数器PC(取指令指针)
    
    CS:IP 不分家
    
    PSW  -处理器状态字寄存器
    有用的9位
    - 状态标志 (6位)
        ZF(结果为0置1) CF(进位置1) PF(含1个数为偶置1) OF(溢出置1) SF() AF
    反映的是ALU运算后结果的状态
    - 控制标志(3位)-用来控制CPU的运行状态
    

    (详细的明天再写)
    DF (方向控制标志)
    TF (跟踪标志)
    IF (中断标志位)
    image

    展开全文
  • 本文提出了一种动态寄存器分配器,该分配器可动态检测并利用群集VLIW处理器的生存期漏洞。生存期漏洞是一个变量不包含有效值的时间间隔。可以将保存生存期漏洞的寄存器分配给有效范围适合生存期漏洞的另一个变量,...
  • Camera AR0134详细的寄存器配置,以及配置顺序,可以用来初始化摄像头
  • 行业资料-建筑装置-带有串行输出的动态移位寄存器的喷墨打印头识别电路.zip
  • (b)采用动态驱动的方式,设计单片、移位寄存器、译码器与16×16点阵LED显示器的驱动电路,主要包括控制点阵LED行和列的连线。 (c)采用移位寄存器、译码器或锁存器驱动点阵LED显示器时,设计单片机与移位寄存器、...
  • 随着科学技术的发展,通信、... AD9779A是Analog Devices公司生产的双通道16位高速宽动态范围数DAC,采样率1Gsps,允许高至奈奎斯特频率的多载波生成。0.18μm CMOS工艺制作,工作电压1.8~3.3 V,采样率1 Gsps时
  • 除了芯片的速度和面积等,人们对低功耗的期望也越来越高,因而在IC设计中...寄存器传输级的低功耗设计对降低整个芯片的功耗作用非常显著,本文讨论的三种寄存器传输级低功耗设计方法,经验证对动态功耗的降低很有效。
  • ARM学习(2) 寄存器的理解 ===》通用寄存器及状态寄存器

    笔者来聊聊ARM通用寄存器以及状态寄存器的认识与理解。

    ARM通用寄存器

    对于处理器来说,寄存器可以作为暂存器,存储临时结果,也可以作为输入数据,方便运算,也可以作为一种索引,去访问存储器,其作用各种各样。

    CortexM3/M4

    CortexM3/M4是比较常用的ARM架构,很多厂商都采用了这样的架构,比如ST公司的stm32,广受大家欢迎,还有NXP的MK60芯片,一直在飞思卡尔比赛中很受欢迎,还有国产兆易创新的GD32,亚特力的AT32,国民技术的N32系列。

    其在嵌入式领域非常受欢迎,相对方便上手,功能齐全,满足一般的对MCU的需求。

    其寄存器模型如下:
    在这里插入图片描述

    • 通用目的寄存器R0-R7 ,低组寄存器,32bit,16位thumb以及32位的thumb-2指令均可以访问
      • R0-R3一般作为参数传递,如果参数再多,则通过压栈的方式传递

      • R0、R1还会作为返回值进行传递,如果是32位则是R0,64位则会用R0-R1
        在这里插入图片描述

        • 可以看到R0、R1、R2三个作为参数传递进入。
        • 后面R0作为结果传出进行比较。
        • 传入参数是数组,为什么不直接传地址(LDR),而是通过DCD指令来传递呢?
        • 这是因为LDR取地址的范围有限,LDR Rn,#立即数地址,该地址只是是小范围(4KB?),所以可以看到DCD的地址就在不远处(6A92 - 6D48相差不远),而存储器的地址则在2000000范围,与其地址相差较大,从图二来看 DCD后的地址,其实是通过DCD的地址先寻址,寻址后再作为地址,继续寻址。
          在这里插入图片描述
          在这里插入图片描述
    • 通用目的寄存器R8-R12,高组寄存器,32bit,较少的16位thumb指令可以访问,一般是 thumb-2指令访问。
    • 栈指针R13(SP) 指示当前栈所指位置。
    • 链接寄存器R14(LR) 保存程序返回地址。
    • 程序计数器R15(PC) 程序运行的当前位置。
      • 指令对齐半字或者字地址,最低位为0
      • 特殊跳转指令,需要将PC 最低位表示Thumb状态,否则会触发异常。
      • PC有时候会作为基址寄存器,然后加地址偏移去访问数据
        • 下图一PC作为基址地址,然后去访问存储器,0x4079a1c+480 =0x4079c04
        • 下图二直接将0x4079c04 作为地址给r0
          在这里插入图片描述
          在这里插入图片描述

    CortexR5

    Cortex R系列继承了ARM7架构下的系统模型,有多组工作模式,每个模式都有自己的地址空间(堆栈地址SP)
    在这里插入图片描述

    • CortexR5 属于ARMv7指令集。
    • 与CortexM3/4一致,其R0-R7 以及R8-R12的作用
    • user模式和sys模式共用一套寄存器,即共享
    • user/sys、FIQ、SVC、ABT、IRQ以及UND模式 下,LR、SP、SPSR均是独立,切换CPSR 模式之后,SP、LR及SPSR自动切换成相应模式下的寄存器值
    • FIQ 之所以被称之快速中断,是因为有独立的R8-R12寄存器,不需要压栈 ,直接使用,
    • SPSR是保存上一个模式的CPSR。

    ARMv7的一般AR系列的寄存器模型和上述的基本相同,有一些新的扩展,

    在这里插入图片描述

    • 增加了Hyp模式以及Mon模式,分别用于虚拟扩展以及安全扩展,
    • Hyp模式下的LR为ELR,记录异常时的返回地址,其他均一致。

    CortexA53

    在这里插入图片描述

    • r0-r7 用来做参数传递或者发返回结果。
    • r8 间接的结果位置寄存器
    • r9-r15 暂存器 保存临时结果
    • r16-r17 动态链接(系统并不是所有地址都可以跳转)(链接器内部插入代码)所需要的寄存器
    • r18 the Platform ABI专用的寄存器 来保存内部程序状态(为了平台通用性 避免使用)
    • r19-r28 被调用者保存的寄存器(相对来说还有调用者保存寄存器 在CortexM3/4就有很好体现)
    • r29 FP寄存器,需要加编译选项
    • r30 链接寄存器
    • SP 栈指针,
    • PC 程序寄存器,
      在这里插入图片描述
      可以看到程序调用时,函数类型为9个参数,汇编代码x0-x7作为参数传递进去,最后一个参数,压栈进行传递,str x9,[SP] 。还用到了 blr 通过寄存器去进行链接跳转 最后通过b 跳转返回。

    状态寄存器

    寄存器通常是CPSR(Current Program state register),用来表示当前程序运行的状态、模式、运算结果状态、中断状态等。 ,比如下面这个CPSR寄存器模型。
    在这里插入图片描述

    标志位域

    说明解释:表示程序的运行结果的状态,可以用来跳转,例如:结果是否为0,结果是否有进位,结果是否溢出,结果是否为负数等等。
    在这里插入图片描述

    • 符号有NCVZ,分别是负数(Negative)、进位(Carry)、溢出(Overflow)、为0(Zero)标志。
    • 衍生出许多跳转指令,近范围或者函数范围内跳转,比如以下这些指令
      • BEQ、BNE 通过判断Z==1,BEQ为相等则跳转,比如CMP X0,X1 BEQ
      • BCS、BCC通过判断C==1,BCS为大于等于则跳转,BCC为小于则跳转
      • BMI、MBL 通过判断N==1,BMI 为负数则跳转,BPL为整数则跳转
      • BVS、BVC 通过判断V==1,溢出则跳转,BVC为非溢出则跳转
      • BHI、BLS通过判断C == 1 and Z == 0 意思就是大于则跳转,
      • BGE、BLT 通过判断N == 1 and V == 1,或者 N == 0 and V == 0 有符号数大于等于
      • BGT、BLE 通过判断Z=0, N == 1 and V == 1 或者 Z=0 N == 0 and V == 0 有符号数大于
        在这里插入图片描述
    • 相关数字运算对标志位的影响。
      在这里插入图片描述

    异常中断控制域

    比如常见的DAIF 中断屏蔽位,分别为:

    • 处理器状态debug中断 屏蔽位:查看点、断点以及系统单步运行
    • 系统错误中断屏蔽位(通常是异步的错误)
    • 普通中断屏蔽位
    • 快速中断屏蔽位
      在这里插入图片描述
      常见的中断控制域如上图所示,
    • CortexM3/4 单独存在一个寄存器primask,可以屏蔽中断,只有普通中断,没有快速中断(支持嵌套,所以快速与否感觉关系不大,同时进入中断后,硬件自动压栈相关寄存器,也提高了中断速度),在cpsr中没有中断屏蔽相关,
    • CortexR5以及A53系列中均有这样的中断控制域,可以访问临界资源时屏蔽中断,

    模式控制域

    CPSR的低五位为模式控制位,控制当前CPU为何种模式,设置各种模式则是为了处理异常以及分层管理,低级无法访问特定资源,而特权模式则可以进行资源上的操作。
    在这里插入图片描述

    • 通过写CPSR的低五位,可以控制系统处于何种模式。
    • 通过读CPSR的第五位 也可以知道当前处于何种模式,判断程序发生了什么故障。
    modedescriptionrestriction
    User Mode运行用户程序,非特权模式 ,无法处理异常,除非异常,否则无法改变当前模式对系统资源的访问进行限制(外设以及memory)
    SVC Mode用于系统管理,比如系统下的资源访问,以及OS的调度管理,可以通过软件触发,特权模式 ,执行SVC指令可以进入到本异常,复位之后进入该模式 ,(正常行为,软件触发到
    system Mode与用户模式共享所有寄存器,特权模式,不能通过异常进入,(正常行为,软件触发
    Abort ModeData Abort或者Prefetch Abort,前者是数据访问出错,后面是取指令错误,特权模式,(异常行为,硬件检测到
    Undefined Mode指令相关的异常处理,例如执行到未定义的指令,特权模式,(异常行为,硬件检测到
    FIQ Mode特权模式,处理快速中断,(正常行为,硬件触发到
    IRQ Mode特权模式,处理普通终端,(正常行为,硬件触发到

    指令选择域

    T Value指令集描述
    0ARM指令集32位DWORD对齐的指令
    1Thumb指令集部分为16位半字(half word)对齐的指令,增加代码密度,减少Image size
    X关联两种指令集可以混合使用,通过状态来表征,比如通过bx 、blx可以切换指令集

    大小端控制域

    endian state value模式描述设置指令
    0小端模式memory 低字节在低位SETEND LE
    1大端模式memory 低字节在高位SETEND BE

    执行状态控制域

    一些控制系统状态的标志位,比如ARMv8-A系列

    标志属性描述HTML
    SP_ELxStack pointer register selected,'比如SP_EL0 或者SP_EL3
    EL"异常等级"“EL0、EL1、EL2以及EL3”
    SS软件单步控制for debugger make PE single-step instruction

    参考

    1. DDI0406C_d_armv7ar_arm.pdf
    2. DDI0460D_cortex_r5_r1p2_trm.pdf
    3. DDI0487G_a_armv8_arm.pdf
    4. Cortex M3权威指南(中文).pdf
    5. ARM Cortex-M3与Cortex-M4权威指南.pdf
    展开全文
  • 另一方面通过修改代价函数,动态地调节输入信号的路径,使信号到达查找表输入端的时间基本趋于一致,从而有效地减少毛刺,降低电路的动态功耗。实验结果表明,在运算时间相同的情况下,与其他算法相比,该算法平均能...
  • 双阈值电压(Vt)技术广泛应用于动态“或”电路中,以实现寄存器文件(RF)设计中的低泄漏,但其待机状态下所选睡眠向量会显着影响其有效性。随着技术扩展到更深的纳米时代,由于PVT(Craft.io,电源电压和温度)...
  • 电信设备-Modbus通讯协议的寄存器列表数据的动态重组方法.zip
  • 地址空间是一个进程可用于...使用一种简单的动态重定位,把每个进程的地址空间映射到物理内存的不同部分。当使用基址寄存器和界限寄存器时,程序装载到内存中连续的空闲位置且装载期间无须重定位,如图3-2c所示。当一.

    地址空间是一个进程可用于寻址内存的一套地址集合。每个进程都有一个自己的地址空间,并且这个地址空间独立于其他进程的地址空间(除了在一些特殊情况下进程需要共享它们的地址空间外)。

    给每个程序一个自己的地址空间,使得一个程序中的地址28所对应的物理地址与另一个程序中的地址28所对应的物理地址不同。方法:

    基址寄存器与界限寄存器

    使用一种简单的动态重定位,把每个进程的地址空间映射到物理内存的不同部分。当使用基址寄存器和界限寄存器时,程序装载到内存中连续的空闲位置且装载期间无须重定位,如图3-2c所示。当一个进程运行时,程序的起始物理地址装载到基址寄存器中,程序的长度装载到界限寄存器中。在图3-2c中,当第一个程序运行时,装载到这些硬件寄存器中的基址和界限值分别是0和16 384。当第二个程序运行时,这些值分别是16 384和16384。如果第三个16KB的程序被直接装载在第二个程序的地址之上并且运行,这时基址寄存器和界限寄存器里的值会是32 768和16 384。

    每次一个进程访问内存,取一条指令,读或写一个数据字,CPU硬件会在把地址发送到内存总线前,自动把基址值加到进程发出的地址值上。同时,它检查程序提供的地址是否等于或大于界限寄存器里的值。如果访问的地址超过了界限,会产生错误并中止访问。这样,对图3-2c中第二个程序的第一条指令,程序执行

    1. JMP 28 

    指令,但是硬件把这条指令解释成为(28+16384=16412)

    1. JMP 16412 

    所以程序如我们所愿地跳转到了CMP指令。在图3-2c中第二个程序的执行过程中,基址寄存器和界限寄存器的设置如图3-3所示。

     

      

     

    图3-2   重定位问题的说明:a) 一个16KB程序;b) 另一个16KB程序;c) 两个程序连续地装载到内存中

     

    使用基址寄存器和界限寄存器是给每个进程提供私有地址空间的非常容易的方法,因为每个内存地址在送到内存之前,都会自动先加上基址寄存器的内容。在很多实际系统中,对基址寄存器和界限寄存器会以一定的方式加以保护,使得只有操作系统可以修改它们。

    使用基址寄存器和界限寄存器重定位的缺点是,每次访问内存都需要进行加法和比较运算。比较可以做得很快,但是加法由于进位传递时间的问题,在没有使用特殊电路的情况下会显得很慢。

     

    程序执行时,必须将地址空间变为绝对地址才能访问系统分配的内存

    地址重定位:操作系统把用户程序指令中的相对地址变换成为所在存储中的绝对地址的过程

    地址重定位实现了:从逻辑地址到物理地址的转换

     

    地址的静态重定位

    定义:在程序运行之前,为用户程序实行了地址重定位工作

    一般由操作系统中的重定位装入程序完成

    重定位装入程序的输入:用户把自己的作业链接装配成一个相对于 0 编址的目标程序

    实现过程:

    静态重定位的处理方法为在加载程序到内存中时,将程序中所有的地址都加上在内存中的起始地址。比如一个程序被加载到从1000号开始的内存空间,而且程序中有一条指令JMP 28,那么程序被加载入内存后这条指令会变成 JMP 1028。静态重定位的难点在于区分程序中哪些值是常量,哪些值是地址。

    特点:

    • 在装入前实现调整
    • 地址要有标识
    • 每次装入都要进行定位
    • 装入后地址不再改变(静态)

    地址的动态重定位

    定义:在程序执行寻址时进行重定位,访问地址时,通过地址变换机构改变为内存地址,用户程序原封不动的装入内存,运行时再完成地址的定位工作。动态重定位需要硬件的支持,要求系统中配备定位寄存器和加法器。

    实现过程:

    使用动态重定位的cpu有两个特殊的寄存器:基址寄存器和界限寄存器。当一个进程运行时,程序的起始地址被装载到基址寄存器中,程序的长度被装载到界限寄存器中。当程序要进行内存操作时,cpu会首先将指令中的地址加上基址寄存器中的地址,再把地址送到内存总线。此外,cpu还会检查地址是否大于界限寄存器中的值。如果访问的地址超出了界限则会出错并停止访问。

    特点:

    • 程序可装入任意内存区域(不要求占用连续的内存区)
    • 只装入部分程序代码即可运行
    • 改变系统时不需要改变程序(程序占用的内存空间动态可变,只需要改变定位寄存器中的值即可)
    • 程序可方便共享

     


     

    展开全文
  • 两种寄存器的区别

    2021-09-26 13:34:35
    从名字上看,SRAM与DRAM的区别只在于一个是静态一个是动态。由于SRAM不需要刷新电路就能够保存数据,所以具有静止存取数据的作用。而DRAM则需要不停地刷新电路,否则内部的数据将会消失。而且不停刷新电路的功耗是很...
  • PicoBlaze处理器提供了一个64个字节的中间结果暂存器组... 同样地,STORE和FETCH也支持直接寻址和间接寻址方式,采用间接寻址的好处是可以灵活且动态地修改RAM地址来实现对RAM的操作。  (1) 直接寻址  STORE sX,
  • 但我们有一点要注意的是,FSMC只能扩展静态的内存,即名称里面的static,不能是动态的内存,比如SDRAM就不能扩展。 4、AHB到APB的桥 从AHB总线延伸出来的两条APB2和APB1总线,上面挂载着STM32的各种各样的外设。我们...
  • 地址空间是一个进程可用于寻址内存的一套地址集合。每个进程都有一个自己的地址空间,并且这...方法:基址寄存器与界限寄存器使用一种简单的动态重定位,把每个进程的地址空间映射到物理内存的不同部分。当使用基址...
  • 动态存储方式与静态存储方式

    千次阅读 2013-07-23 15:31:41
    从变量的作用域的角度来观察,变量可以...静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式动态存储方式是在程序运行期间根据需要进行动态的分配存储空间的方式  用户区 程序区 静态存储区
  • 目录 知识点回顾 【镜像值mirror value和期望值desired value】 寄存器访问方式 【函数function 列表】 set 函数 get 函数 get_mirrored_value get_reset predict ...期望值:利用寄存器...
  • 图片来自书籍 3-1 段寄存器 3-2 通用寄存器介绍 3-12 条件转移指令 4-1 扩展寄存器 表视图 4-5 段描述符格式 注释: 正常的段描述符存储是没有高低只分的 4-10 段描述符的type类型 4-8 选择子结构 4-11 控制寄存器 CR...
  • 为避免寄存器溢出,可以降低输人的动态范围。用正值常数K<1对输人进行缩放,可吐降低运行时溢出的概率。不幸的是,缩放同时也降低了输出的精度。确切地说,缩放后数据字的精度将缩减log2K-bit,相应输出精度也将...
  • DDR模式寄存器

    2022-04-29 19:51:04
    在初始化过程中,模式寄存器通过模式寄存器设置(MRS)命令进行编程,并保留存储的信息(MR0[8]除外,即自清除),直到重新编程,重置#下降,设备断电。 可以通过重新执行MRS命令来更改模式寄存器的内容。即使用户只想...
  • LINUX寄存器总结

    千次阅读 2020-08-03 21:45:48
    前言(wxy):说到寄存器,迷迷茫茫好多年,首先不知道到底有哪些寄存器,因为不同的博客总会出现几个我不认识的寄存器;其次,想记住每个寄存器的名称,真的太南了;最后,他们到干什么用的,寄存器之间到底什么关系...
  • 寄存器变量

    千次阅读 2019-10-12 23:19:48
    1.寄存器变量可以用来优化加速c语言程序 2.声名只需在类型前多加register 即可,eg register int quick; (quick 就是一个整形的寄存器变量) 3.register只是一个建议型关键字,能不能声名成功还取决于编译器(建议...
  • 重新加深STM32F103系列SPI和寄存器了解,结合“正点原子”相关教材和《STM32中文参考手册》,写了这篇关于SPI的总结文档,使自己忘记后有迹可查。
  • arm64 寄存器

    2022-07-24 23:51:10
    arm64 寄存器
  • 寄存器的认识

    2022-04-02 15:50:26
    一组这样的锁存器称之为“寄存器” 如下图:用的时候把数据写入线打开即1,然后再关闭(为0)这样存储的过程就完成。 对于64位的寄存器 这样来看,用一根线存储所有的锁存器,这样128位。用一根线启用所有的锁存...
  • 寄存器和运行时栈

    2021-11-29 22:53:17
    文章目录一、寄存器二、运行时栈 一、寄存器 在LoongArch体系中,有32个通用寄存器,除了0号寄存器始终为0外,其他31个寄存器物理上没有区别。但系统人为添加了一些约定,给了它们特定的名字和使用方式。 对以上...
  • 选择寄存器

    2021-04-25 09:56:47
    2.(人口动态,户籍 ... "register select"中文翻译寄存器选择 "color select register"中文翻译彩色选择寄存器 "csr channel select register"中文翻译通道选择寄存器 "memory address select register"中文...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 152,465
精华内容 60,986
关键字:

动态寄存器