精华内容
下载资源
问答
  • 寄存器有哪两种
    千次阅读
    2019-08-05 16:04:33

    DATE: 2019-8-5


    前言

    在ARM汇编优化中,NEON寄存器清零,比较简单的两种方法,也比较实用,特记录以备忘。

    1、写法一: 使用vdup指令

    mov		r5, #0
    vdup.8	d0,	r5
    

    2、写法二:使用vmov指令

    vmov.i8	d0,	#0
    

    THE END!

    更多相关内容
  • 在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器类。内部寄存器不能被外部电路或软件访问,只是为内部电路的实现存储功能或满足电路的时序要求。而接口寄存器可以同时被内部电路和...
  • 寄存器分类

    2020-11-13 04:36:40
    寄存器主要分并行寄存器和移位寄存器两种。并行寄存器是并行输入并行输出寄存器。移位寄存器除具寄存器的功能外,所存储的数码在时钟脉冲的作用下还可以移位。根据数码的移位方向分为左移寄存器和右移寄存器。左移...
  • 寄存器从功能上说,通常可分为数码寄存器和移位寄存器两种。  数码寄存器用于寄存一组二进制代码,广泛用于各类数字系统。  【例】 设计-个8位寄存器的VHDL程序,并使用MAX+p1us Ⅱ进行仿真。  仿真结果...
  • 文章目录一、通用寄存器(GPR)二、EFLAGS寄存器(标志寄存器)三、指令指针寄存器(EIP)四、段寄存器(Segment Register) 通用寄存器(General Purpose Registers,32位,8个) 段寄存器(Segment Registers,16...

    通用寄存器(General Purpose Registers,32位,8个)
    段寄存器(Segment Registers,16位,6个)
    程序状态与控制寄存器(Program Status and Control Register,32位,1个)
    指令指针寄存器(Instruction Pointer,32位,1个)

    一、通用寄存器(GPR)

    IA-32体系结构拥有8个32位通用寄存器(General Purpose Register, GPR),其名称与基本功能如下表所示。
    在这里插入图片描述
    在这8个通用寄存器中,一些通用寄存器可进一步切分为16位或8位寄存器,以保证向后兼容性,具体如下图所示。

    例如,寄存器AX引用寄存器EAX的低位字,而AH和AL标识符则分别引用寄存器AX的高字节和低字节。

    对于栈指针寄存器和变址寄存器,也可使用对应的16位版本(BP、SP、SI、 DI)来引用32位寄存器的低16位。

    通用寄存器切分及命名示意图【注:高(H: High)、低(L: Low)】:
    在这里插入图片描述

    二、EFLAGS寄存器(标志寄存器)

    EFLAGS: Flag Register,标志寄存器

    IA-32中标志寄存器的名称为EFLAGS,其大小为4个字节(32位),由原来的16位FLAGS寄存器扩展而来。
    EFLAGS寄存器的每位都有意义,每位的值或为1或为0,代表On/Off或True/False。
    其中有些位由系统直接设定,有些位则根据程序命令的执行结果设置。

    32位的EFLAGS寄存器用于存储算数操作符状态或其他执行状态。该寄存器中的各个位表示不同的标识,包括一组状态标识、一个控制标识和一组系统标识。EFLAGS寄存器中的标识主要用于实现条件分支。
    其中,与程序调试相关的状态标识包括:零标识(ZF),溢出标识(OF),进位标识(CF)和符号标识(SF)。各标识的具体含义如下:

    (1)零标识(ZF)。若算数或逻辑运算结果为0,则ZF值为1,否则ZF值为0。

    (2)溢出标识(OF)。有符号整数溢出时,OF置为1;最高有效位(MSB)改变时,OF置为1。

    (3)进位标识(CF)。无符号整数溢出时,CF置为1。

    (4)符号标识(SF)。等于运算结果的最高位(即有符号整数的符号位);0表示正数, 1表示负数。

    (5)方向标识(DF)。另一个需要注意的标识是控制标识(DF),该标识位为方向标识,用于控制串处理指令处理信息的方向。当DF为1时,每次操作后使变址寄存器ESI和EDI减小,这样就使串处理从高地址向低地址方向处理;当DF为0时,处理方向相反。DF标识由STD指令置位,由CLD指令清除。

    (6)陷阱标识(TF)和中断允许标识(IF)。它们是与中断和异常相关的标识位。如果TF标识位置为1,CPU将在执行完每条指令后产生单步中断,调试器使用该特性在调试程序时进行单步执行,该标识位还可用于检查调试器是否正常运行如果IF位置位,则CPU在收到中断请求后,应该对中断请求进行响应处理。

    EFLAGS寄存器中的标识位及其功能:
    在这里插入图片描述
    -r用这个指令,得到的信息右下角: NV UP EI PL NZ NA PO NC
    这些符号代表的就是标志寄存器里常用标志位的值。

    这个是符号值对应表:

    溢出标志OF(Over flow flag) 		OV(1) NV(0)
    方向标志DF(Direction flag) 		DN(1) UP(0)
    中断标志IF(Interrupt flag) 		EI(1) DI(0)
    符号标志SF(Sign flag) 			NG(1) PL(0)
    零标志ZF(Zero flag) 			ZR(1) NZ(0)
    辅助标志AF(Auxiliary carry flag) AC(1) NA(0)
    奇偶标志PF(Parity flag) 		    PE(1) PO(0)
    进位标志CF(Carry flag) 			CY(1) NC(0)
    

    EFLAGS寄存器(标志寄存器)的OD演示

    三、指令指针寄存器(EIP)

    32位指令指针寄存器(EIP)存放指令指针,即当前代码段中将被执行的下一条指令的线性地址偏移。

    程序运行时,CPU根据CS段寄存器和EIP寄存器中的地址偏移读取下一条指令,将指令传送到指令缓冲区,并将EIP寄存器的值自增,增大的大小即被读取指令的字节数。

    EIP寄存器的值一般不能直接修改,EIP寄存器的更改有两种途径:一是通过特殊的跳转和调用/返回指令JMP、Jcc、CALL、RET等;二是通过中断或异常进行修改。

    四、段寄存器(Segment Register)

    在IA-32体系结构中,存在6个16位的段寄存器: CS、SS、DS、ES、FS和GS。分别用于存储保护模式下逻辑地址中的段选择器。

    (1)代码段寄存器(CS,Code Segment):存放应用程序代码所在的段的段描述符索引(该段描述符中包含代码段的线性基址)。易知,CPU在获取将要执行的下一条指令时,使用CS寄存器找到代码段的线性基址,再与EIP中的线性地址偏移量相加,从而得到下一条指令的线性地址。

    (2)栈段寄存器(SS,Stack Segment):存放栈段的段描述符索引(该段描述符中包含栈段的线性基址)。

    (3)数据段寄存器(DS(Data Segment)、ES、FS、 GS):存放数据段的段描述符索引(这些描述符中均包含数据段的线性基址)。其中,DS数据段含有程序使用的大部分数据,ES、FS和GS分别对应IA-32中引入的附加数据段。ES数据段可以为某些串指令存放目的数据,FS数据段寄存器可用于计算结构化异常处理(Structured Exception Handler, SEH)、线程环境块(Thread Environment Block, TEB)、进程环境块(Process Environment Block, PEB)等地址。

    展开全文
  • 在学习开发51+RC500的过程中发现了两种访问外部寄存器的操作方法一种是用XBYTE方法来直接访问外部寄存器一种是用基地址加偏移量的方法来访问外部寄存器两种方法的本质其实都一样,我可以看XBYTE的定义
  • MIPS 寄存器

    千次阅读 2021-12-26 09:27:15
     MIPS32寄存器分为类:通用寄存器(GPR)和特殊寄存器。 通用寄存器(GPR) 在MIPS体系结构中32个通用寄存器,在汇编程序中可以用编号$0~$31表示,也可以用寄存器的名字表示,如sp、sp、sp、t1、$ta等,如

    概要

    MIPS寄存器

    RISC的一个显著特点就是大量使用寄存器。因为寄存器的存取可以在一个时钟周期内完成,同时简化了寻找方式,所以,MIPS的指令中除了加载/存储指令以外,都使用寄存器或者立即数作为操作数,以便让编译器通过保持对寄存器内数据的频繁存取进一步优化代码的生成性能。
      MIPS32寄存器分为两类:通用寄存器(GPR)和特殊寄存器。

    通用寄存器(GPR)

    在MIPS体系结构中有32个通用寄存器,在汇编程序中可以用编号$0~$31表示,也可以用寄存器的名字表示,如 s p 、 sp、 spt1、$ta等,如图,堆栈是从内存的高地址方向向低地址方向增长的。

    编号寄存器名称寄存器描述
    0zero第0号寄存器,其值始终为0
    1$at保留寄存器
    2~3$v0~v1values, 保存表达式或函数返回结果
    4-7$a0~a3aruments, 作为函数的前4个参数
    8~15 t 0   t0~ t0 t7temporaries,供汇编程序使用的临时寄存器
    16~23 s 0   s0~ s0 s7saved values,子函数使用时需要先保存原寄存器的值
    24~25$t8~t9temporaries, 供汇编程序的临时寄存器,补充$t0~t7
    26~27 k 0   k0~ k0 k1保留,中断处理函数使用
    28$gpglobal pointer,全局指针
    29$spstack pointer, 堆栈指针,指向堆栈的栈顶
    30$fpframe pointer, 保存栈指针
    31$rareturn address, 返回地址
    • 0 : 即 0:即 0zero,该寄存器总是返回0,为0这个有用常数提供了一个简洁的编码形式。在MIPS处理器的通用寄存器中,没有任何帮助运算判断的标志寄存器,要实现相应的功能时,都是通过测试两个寄存器是否相等完成的。MIPS编译器常常会使用slt、beq、bne等指令和由寄存器$0获得0值产生比较所有的比较条件,如相等、不等、小于等于、大于、大于等于。还可以用add指令创建move伪指令,如"move $t0, $t1; t 0 = t0= t0=t1"实际为“add $t0, 0 , 0, 0,t1; $t0= $t1 + 0"。使用MIPS伪指令可以简化任务。
    • 1 ( 1 ( 1(at) : 该寄存器为汇编保留,用做汇编器的暂时变量。
    • $2$3($v0$v1): 用于存放子程序的返回值或非浮点结果。当这两个寄存器不够存放返回值时,编译器通过内存来完成。
    • $4$7($a0 a 3 ) : 用 于 将 前 4 个 参 数 传 递 给 子 程 序 , 不 够 的 用 堆 栈 处 理 。 a3):用于将前4个参数传递给子程序,不够的用堆栈处理。 a3)4a0$a3、$v0 v 1 和 v1和 v1ra 一起完成子程序函数调用过程,分别用以传递参数、返回结果和存放返回地址。当需要使用更多的寄存器时就需要堆栈了。MIPS编译器总是为参数在堆栈中留有空间,以防有参数需要存储。
    • $8$15($t0$t7): 一个子函数可以不用保存并随意使用这些寄存器。在进行表达式计算时,这些寄存器是非常好的临时变量。在使用时需要注意,当调用一个子函数时,这些寄存器的值有可能被子函数破坏。
    • $16$23($s0$s7): 子函数必须保证当函数返回时这些寄存器的内容将恢复到函数调用以前的值,或者子函数里不使用这些寄存器或把它们保存在堆栈上并保存在函数退出时恢复。这种约定使这些寄存器非常适合作为寄存器变量,或者用于存放一些函数调用期间必须保存的原值。
    • $24$25($t8 t 9 ) : 同 t9): 同 t9):t0$t7,作为$t0$t7寄存器补充。
    • $26$27($k0$k1): 通常被中断或异常处理程序使用,以保存一些系统参数。
    • 28 ( 28( 28(gp): C语言中有两种存储类型,分别是自动型和静态型。自动变量是一个函数中的局部变量。静态变量在进入和退出一个函数时都是存在的。为了简化静态数据的访问,MIPS保留了一个寄存器作为全局指针gp在编译时,数据需要在以gp为基指针的64KB范围内。
    • 29 ( 29( 29(sp): MIPS硬件并不直接支持堆栈,X86有单独的PUSH和POP指令,而MIPS没有单独的栈操作指令,所有对栈的操作都是统一的内存访问方式,单这并非不影响MIPS使用堆栈。在发生函数调用时,调用者把函数调用之后要用的寄存器压入堆栈,被调用者把返回地址寄存器 r a ( 并 非 任 何 时 候 都 保 存 ra(并非任何时候都保存 rara)和保留寄存器压入堆栈。同时,调整堆栈指针,并在返回时从堆栈中恢复寄存器。
    • 30 ( 30( 30(fp): 不同编译器可能对该寄存器使用方法不同。GNU MIPS C编译器使用了栈指针(Frame Pointer)。SGI的C编译器则没有使用栈指针,只是把这个寄存器当成保存寄存器使用($s8),这虽然节省了调用和返回开销,但增加了代码生成的复杂度性。
    • 31 ( 31 ( 31(ra): 存放返回地址。MIPS有一个jar(jump-and-link,跳转并链接)指令,在跳转到某个地址时可把下一条指令的地址放到 r a 中 , 用 于 支 持 子 程 序 。 例 如 , 调 用 程 序 把 参 数 放 到 ra中,用于支持子程序。例如,调用程序把参数放到 raa0~ a 3 中 , “ j a r X " 指 令 跳 到 X 过 程 , 被 调 用 时 需 要 保 存 的 寄 存 器 为 a3中,“jar X"指令跳到X过程,被调用时需要保存的寄存器为 a3jarX"Xa0$a3、$s0 s 7 、 s7、 s7gp、 s p 、 sp、 spfp、$ra。

    特殊寄存器

    MIPS32架构中定义了3个特殊寄存器。分别为PC(程序计数器)、HI(乘除结果高位寄存器)和LO(乘除结果低位寄存器)。在进行乘法运算时,HI和LO保存乘法的运算结果,其中HI存储高32位,LO存储低32位;而在进行除法运算时,HI保存余数,LO存储商。

    展开全文
  • 寄存器总结之通用寄存器

    千次阅读 2020-09-15 16:34:02
    8086CPU14个寄存器,他们的名称为: AX、CX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW (简单理解1+1把1放AX,2放BX,加起来的和放在CX) 8086CPU所有的寄存器都是16位的,可以存放个字节。 8086...

    一个典型CPU是由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。

    区别:内部总线实现CPU内部各个器件之间的联系

    外部总线实现CPU与主板上其它器件的联系。(地址,数据,控制)

    8086CPU有14个寄存器,他们的名称为:

    AX、CX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW

    (简单理解1+1把1放AX,2放BX,加起来的和放在CX)

    AX、CX、CX、DX这几个是通用寄存器。

    8086CPU所有的寄存器都是16位的,可以存放两个字节。

     8086上一代CPU中的寄存器都是8位;

    为了保证兼容性,这四个寄存器都可以分为两个独立的8位寄存器使用。

    AX可以分为AH和AL(兼容以前就把AH置为0)

     

    字在存储器中的存储

    一个字可以存在一个16位的寄存器中,这个字的高位字节和低位字节自然就存在这个寄存器的高8位寄存器和低8位寄存器

    所以一个字等于两个字节

    关于进制数:

    十六进制数的一位相当于二进制数的四位

    一个内存单元可以存放8位数据,CPU中的寄存器又可以存放n个8位数据,就是说计算机中的数据大多是由1-N个8位数据构成的。

    用十六进制来表示数据可以直观的看出这个数据是由哪些8位数据构成的,每两位对应一个8进制。

    展开全文
  • 单片机的特殊功能寄存器SFR,是SRAM地址已经确定的SRAM单元,在C语言环境下对其访问归纳起来有两种方法。
  • 8086CPU中14个寄存器的详解

    千次阅读 2022-02-17 08:58:52
    在执行单元EU和总线接口单元BIU中一共14个寄存器,其中通用寄存器8个、标志寄存器FLAGS一个、控制寄存器5个。 通用寄存器 8个通用寄存器再进行细分,又可划分为数据寄存器(AX~DX)、栈顶指针寄存器(SP)、基址...
  • ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据。  状态寄存器中有些位是当前没有使用的,但在ARM将来版本中可能使用这些位,因此用户程序不要使用这些位。  程序不能通过直接修改CPSR中T的控制位...
  • 寄存器从功能上说,通常可分为数码寄存器和移位寄存器两种。  数码寄存器用于寄存一组二进制代码,广泛用于各类数字系统。  【例】 设计-个8位寄存器的VHDL程序,并使用MAX+p1us Ⅱ进行仿真。  仿真结果...
  • TZ子模块可以工作在Cycle-by-Cycle、One-Shot两种模式下,这两种状态的区别是: one-shot是永久起作用的,恢复它只有人工清除。 而Cycle-by-Cycle却是本周期有用,下一周期自动恢复 外部触发选择寄存器...
  • 寄存器的七寻址方式

    千次阅读 2020-04-08 23:00:24
    立即寻址方式: 操作数作为指令的一部分而直接写在指令中...把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式称为寄存器寻址方式。由于指令所需的操作数已存储在寄存器中,或操作的结果存入寄存器,这样,...
  • 唯独串口3无论怎么初始化寄存器都都全为0,在网上查找的时候发现一个兄弟是搞错芯片了,他的芯片没有串口3所以无法初始化链接在此但是我用的芯片是STM32F103RE系列是4个串口的! 因为我的串口3是串口1移植过来的,...
  • 通用寄存器

    千次阅读 2017-10-21 10:07:31
    通用寄存器:基本作用 处理机包含了一组 1 6位寄存器,其中 8个是任何时候都可存访的“通用寄存器”。这些寄存器被称之为:r 0、r 1、r 2、r 3、r 4、r 5、r 6以及r 7。 U N I X使用这些寄存器的惯例是: *...
  • STM32 GPIO 的8模式 序号 模式 1 输入浮空(Input floating) 2 输入上拉(Input pull-up) 3 输入下拉(Input-pull-down) 4 模拟输入(Analog) 5 开漏输出(Output open-drain) 6 推挽输出...
  • ARM寄存器

    千次阅读 2022-03-30 09:09:31
    文章目录前言一、ARM架构简介二、ARM 寄存器组介绍1.引入库2.读入数据总结 前言 arm学习笔记 提示:本人自己整理笔记仅供参考 一、ARM架构简介 ARM架构过去称作进阶精简指令集机器,是一个32位精简指令集(RISC)...
  • CPU和寄存器详解

    千次阅读 多人点赞 2022-01-21 18:59:04
    通常,每一类型的CPU都它自己唯一的机器语言。这是为什么为Mac写的程序不能在IBM类型PC机运行的一个原因。 电脑通过使用时钟来同步指令的执行。时钟脉冲在一个固定的频率(称为时钟频率)。当你买了一台1.5GHz...
  • cpu中寄存器分类

    千次阅读 2021-08-12 11:21:13
    在CPU中至少要六类寄存器:指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、数据寄存器(DR)、累加寄存器(AC)、程序状态字寄存器(PSW)。这些寄存器用来暂存一个计算机字,其数目可以根据需要进行扩充...
  • STM32芯片里面什么 我们看到的STM32芯片是已经封装好阿成品,主要由内核和片上外设组成。若与电脑类比,内核与外设就如同电脑上的CPU和主板、内存、显卡、硬盘的关系。 STM32F103采用的是Cortex-M3内核,内核即...
  • STM32寄存器的简介、地址查找,与直接操作寄存器

    万次阅读 多人点赞 2019-01-11 11:15:15
    从名字来看,跟火车站寄存行李的地方好像是关系的。只不过火车站行李寄存处,存放的行李;寄存器可能存放的是指令、数据或地址。  存放数据的寄存器是最好理解的,如果你需要读取一个数据,直接到这个...
  • 寄存器模型

    千次阅读 2022-03-27 16:44:27
    UVM中寄存器模型的一些概念。
  • Linux详解寄存器

    千次阅读 2022-04-19 22:03:39
    测试寄存器 80386 有两个32位的测试寄存器TR6和TR7。 这寄存器用于在转换旁路缓冲器 (Translation Lookaside Buffer)中测试随机存储器(RAM)和相联存储器(CAM)。 1.TR6是测试命令寄存器,其内存放测试控制命令。...
  • 寄存器的作用

    千次阅读 2021-07-28 07:23:41
    [From]AX/EAX: 累加器,算术通用寄存器,与端口的通讯也用这个寄存器.BX/EBX: 基址寄存器.CX/ECX: 计数器,结合串处理指令使用.DX/EDX: 算术通用寄存器.和累加器结合表示双字长的数,其中累加器用于存低位数.[From]...
  • 当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称,为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指令的地址。此后经过分析指令,执行指令。完成...
  • 寄存器

    千次阅读 2018-08-08 18:37:35
    在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,存器累加器(ACC)  2.包括通用寄存器、专用寄存器和控制寄存器  3.分类 数据寄存器- 用来储存...
  • 不知你在DEBUG程序,又或者阅读操作系统源码时候没细心观察,从一个普通子函数返回与异常(中断)返回的汇编指令都是BX LR,但是这两者的意义是一样的吗?这篇文章就来揭开LR寄存器的神秘面纱。 当单片机涉及函数...
  • ARM Cortex-A8 通用寄存器

    千次阅读 2020-12-23 00:04:10
    Cortex-A8 体系结构1.ARM处理器运行模式2.ARM寄存器3.ARM指令导址方式 1.ARM处理器运行模式 1、用户模式(User):ARM处理器正常的程序执行状态; 2、系统模式(System):运行具有特权的操作系统任务; 3、快速中断模式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 290,839
精华内容 116,335
热门标签
关键字:

寄存器有哪两种