通用寄存器

32位Intel CPU所含有的寄存器

拈花ヽ惹草 提交于 2020-02-29 06:16:52
4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1、数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。 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),每个寄 存器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字 节的信息。 寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。累加器可用于乘、 除、输入/输出等操作,它们的使用频率很高; 寄存器BX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 寄存器CX称为计数寄存器(Count Register)。在循环和字符串操作时,要用它来控制循环次数;在位操作 中,当移多位时,要用CL来指明移位的位数;

C Primer Plus(第五版)1

筅森魡賤 提交于 2020-02-28 03:44:48
这是C Primer Plus(第五版)的第一章,上传上来主要是方便我进行做笔记,写注释,还有我会删掉一些“废话”等。 1.1 C语言的起源 贝尔实验室的 Dennis Ritchie 在1972年开发了C,当时他正在与Ken Thompson 一起设计 UNIX操作系统 。 1.4 计算机工作的基本原理 现代计算机可分为几个部件。中央处理单元(或称CPU)担负着绝大部分的计算工作,随机访问存储器(或称RAM)作为一个工作区来保存程序和文件;永久存储器,一般是硬盘,即使在计算机关机时也能记下程序和文件;还有各种外围设备(如键盘,鼠标和监视器)用来提供人与计算机之间的通信。CPU负责处理程序,所以我们集中来讨论它的功能。 CPU 的工作非常简单,至少在我们所做的这一简短的描述中是这样的。它从内存中获取一个指令并执行该指令,然后从内存中获取下一个指令并执行,。一个千兆 CPU 可以在一秒种内进行大约一亿次这样的操作,所以 CPU 能以惊人的速度来从事其枯燥的工作。CPU 有自己的小工作区,该工作区由若干个寄存器(registers)组成,每个寄存器可以保存一个数。一个寄存器保存下一条指令的内存地址,CPU 使用该信息获取下一条指令。获取一条指令后,CPU 在另一个寄存器中保存该指令并将第一个寄存器的值更新为下一条指令的地址。CPU 只能理解有限的指令(指令集)。还有

汇编语言-寄存器

╄→гoц情女王★ 提交于 2020-02-26 15:34:22
2.1 通用寄存器 AX, BX, CX, DX 这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。8086CPU这5个寄存器都可以分为两个可以独立使用的8位寄存器来用: AX 可分为 AH 和 AL ; BX 可分为 BH 和 BL ; CX 可分为 CH 和 CL ; DX 可分为 DH 和 DL ; AX 的低8位(0 - 7)构成 AL 寄存器,高8位(8 - 15)构成了 AH 寄存器。 AH 和 AL 寄存器是可以独立使用的8位寄存器。 2.2 字在寄存器中的存储 考虑兼容性8086CPU可以一次性处理一下两种尺寸的数据。 字节 :记为 byte ,一个字节由8个bit组成,可以存在8位寄存器中。 字 :记为 word ,一个字由俩个字节组成,这两个字节分别称为这个字的 高位字节 和 低位字节 。 2.3 几条汇编指令 汇编指令 控制CPU完成的操作 用高级语言表述 MOV ax,18 将18送入寄存器ax ax = 18 ADD ax,8 将寄存器ax中的数值加上8 ah = ax + 8 注意指令的两个操作对象的位数应当是一致的。 例:ax为16位寄存器,只能放4位16进制位数,所以多余的高位会丢失。 2.4 物理地址 CPU访问内存单元时,要给出内存单元的地址。所有内存单元构成的存储空间时一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址

X86汇编2.寄存器

北城余情 提交于 2020-02-26 04:12:47
最近学习了X86汇编,其实无论是古老的8086还是现在i3/5/7/9,Xeon3/5,在最基本原理上,都是相通的,只是CPU位数,寻址空间,寄存器个数,指令集的扩充等方面有所不同,对于学习,8086永不过时。 1.CPU组成 一个典型CPU由:运算器、控制器、寄存器(CPU工作原理)等部件构成,这些器件依靠内部总线连接。 运算器进行信息处理 寄存器进行信息存储,每个CPU有不同数量的寄存器 控制器控制各种器件进行工作 内部总线连接各种器件,在他们之间进行数据的传送 对于一个汇编程序员来说,寄存器是CPU中可以用指令读写的部件,程序员通过改变寄存器中的内容来实现对CPU的控制。 常用的寄存器(reg)有:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di 段寄存器(sreg)有:ds,ss,cs,es 2.通用寄存器 以8086为例,8086CPU的寄存器都是16位的,有4个通用寄存器:AX、BX、CX、DX,但是为了兼容更老的CPU,每个16位通用寄存器可以分为2个8位的独立通用寄存器,如:AX可分成:AH、AL独立使用,其他也一样。 汇编指令(不区分大小写): mov ax, 18 ;将18存入ax寄存器 mov ah, 78 ;将78存入ah寄存器,也就是ax的高8位 add ax, 8 ;将ax寄存器的值加8

计算机基础

只愿长相守 提交于 2020-02-23 03:34:33
1、基础概念 寄存器:嵌入到CPU中的内存,也可以理解为CPU里面的存储器,一个CPU有多个寄存器; 总线:连接CPU和其它芯片的导线; 总线在物理上:是一根根导线的集合;逻辑上分为:地址总线、数据总线、控制总线 地址总线:CPU通过地址总线来指定存储单元的。根据地址总线的根数来确定最大的寻址; 数据总线:CPU与内存或其它器件的数据传送;数据总线的宽度决定了CPU和外界数据的传送速度; 控制总线:用来控制外部器件;无非就是读/写; CPU可以直接使用的信息在存储器中存放; 总结:地址总线决定CPU的寻址能力;数据总线决定一次数据传送量;控制总线决定CPU对其它器件的控制能力; 主板上有核心器件和主要器件(他们通过地址、数据、控制)总线来连接;接口卡; 存储器:(1)、读写属性分:随机存储器(RAM)、只读存储器(ROM); (2)、功能上分类:随机存储器(RAM)、装有BIOS的ROM、接口卡上的RAM; BIOS:主板、网卡、显卡、接口卡上都有的软件系统,通过这个可以对该硬件设备进行最基本的输入输出, 内存地址空间:最终运行程序的是CPU,所以用汇编编程的时候,必须要从CPU的角度来考虑问题; 计算机内部都是从0开始的; 任何的指令、命令、数据,在计算机中都为二进制; 2、CPU的内部工作原理 CPU由运算器、控制器、寄存器等组成; 8086CPU有14个寄存器:AX、BX

STM32学习笔记5(TIM通用模块定时功能)

吃可爱长大的小学妹 提交于 2020-02-17 11:41:33
原文地址: http://blog.sina.com.cn/s/blog_49cb42490100s6ud.html 1. STM32 的 Timer 简介 STM32中一共有 11个定时器,其中 2个高级控制定时器, 4个普通定时器和 2个基本定时器,以及 2个看门狗定时器和 1个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的 SysTick,看门狗定时器以后再详细研究。今天主要是研究剩下的 8个定时器。 定时器 计数器分辨率 计数器类型 预分频系数 产生 DMA请求 捕获 /比较通道 互补输出 TIM1 TIM8 16位 向上,向下,向上 /向下 1-65536之间的任意数 可以 4 有 TIM2 TIM3 TIM4 TIM5 16位 向上,向下,向上 /向下 1-65536之间的任意数 可以 4 没有 TIM6 TIM7 16位 向上 1-65536之间的任意数 可以 0 没有 其中 TIM1和 TIM8是能够产生 3对 PWM互补输出的高级登时其,常用于三相电机的驱动,时钟由 APB2的输出产生。 TIM2-TIM5是普通定时器, TIM6和 TIM7是基本定时器,其时钟由 APB1输出产生。由于 STM32的 TIMER功能太复杂了,所以只能一点一点的学习。因此今天就从最简单的开始学习起,也就是 TIM2-TIM5普通定时器的定时功能。 2. 普通定时器 TIM2

体系结构复习3

送分小仙女□ 提交于 2020-02-16 02:45:28
流水线技术 访问主存的冲突解决 设置两个独立编址的存储器 指令和数据依然混合放在同一个主存,但设置两个Cache:指令Cache和数据Cache。程序空间和指令空间相互独立的系统结构称为哈佛结构。 指令和数据依然混合放在统一主存,但主存采用多体交叉结构。(有一定的局限性) 在主存和指令分析部件之间增设指令缓冲站 先行指令缓冲站 先行程序计数器PC1 先行程序计数器PC 指令缓冲 存储区 主 存 指令分析部件 指令寄存器IR 控 制 控制逻辑 器 指令缓冲存储区&控制逻辑 a) 按队列方式工作 b) 只要指令缓冲站不满,他就自动地向主存控制发取指令请求,不断地取指令 指令分析部件 a) 每分析完一条指令,就自动向指令缓冲站发出取下一条指令的请求。指令取出之后就把指令缓冲站中的指令作废。 b) 指令缓冲器中存放的指令条数是动态变化的 两个程序计数器 a) 先行程序计数器PC1:用于从主存预取指令 b) 现行程序计数器PC:用来记录指令分析部件当前正在分析的指令的地址 先行控制 先行控制技术:缓冲技术和预处理技术的结合 a) 缓冲技术:在 工作速度不固定 的两个功能部件之间设置缓冲器,用以 平滑 它们的工作。 b) 预处理技术:预取指令、对指令进行加工以及预取操作数等。 采用先行控制方式的处理机结构 主存储器 存储控制器 先行指令缓冲站 先行读数站 指令分析部件 先行操作站 运算控制器

嵌入式GPIO接口及操作(一)

邮差的信 提交于 2020-02-10 02:59:20
  GPIO意思就是通用输入输出,一些引脚可以通过他们输出高低电平,或者通过它们读入引脚的状态。 对GPIO的操作是对所有硬件的操作最基本的技能。 一、通过寄存器来操作GPIO引脚,一个引脚可以用于输入、输出或者其他的特殊功能,那么一定有寄存器来配置这些功能, 对于输入,就是读取引脚的状态,一定可以从寄存器在中读取到引脚的状态;对于输出,也有相应的寄存器,向寄存器中 写入数据使引脚输出高低电平;其他特殊功能,有另外的寄存器来控制它。 对于S3C2440来说,同样的道理,也会有上面所说的寄存器,GPxCON用于配置引脚的功能的(输入、输出或其他功能), GPxDAT用于读/写引脚数据;另外GPxUP用于是否使用内部上拉电阻。 1、GPxCON寄存器-配置寄存器 对于S3C2440,除了GPACON特殊外(寄存器每一位对应一个引脚),其它都是寄存器的没2位控制一根引脚:00表示输入, 01表示输出、10表示特殊、11保留不用。 2、GPxDAT寄存器 用于读/写引脚:当引脚被设为输入时,从GPxDAT寄存器读取引脚的状态;当引脚被设为输出时,将数据写入GPxDAT寄存器 相应的引脚会输出相应的该低电平。 3、GPxUP寄存器 某位为1时,相应引脚无内部上拉电阻;某位为0时,相应引脚使用上拉电阻。 上拉电阻、下拉电阻的作用:GPIO为第三态时(相当于无外接芯片),引脚的电平状态有上拉电阻

2、LED实验

a 夏天 提交于 2020-02-04 22:01:36
CC2530的IO口概述   CC2530芯片有21 个数字输入/输出引脚,可以配置为通用数字I/O 或外设I/O 信号,配置为连接到ADC、定时器或USART外设;这些I/O 口的用途可以通过一系列寄存器配置,由用户软件加以实现   I/O 端口具备如下重要特性:     (1)21 个数字I/O 引脚     (2)可以配置为通用I/O 或外部设备I/O     (3)输入口具备上拉或下拉能力     (4)具有外部中断能力   21 个I/O 引脚都可以用作于外部中断源输入口,因此如果需要外部设备可以产生中断, 外部中断功能也可以从睡眠模式唤醒设备 未使用的I/O 引脚处理   未使用的I/O 引脚电平是确定的,不能悬空;一个方法是使引脚不连接,配置引脚为具有上拉电阻的通用I/O输入,这也是所有引脚复位后的状态(除了P1.0 和P1.1 没有上拉/下拉功能);或者引脚可以配置为通用I/O输出,这两种情况下引脚都不能直接连接到VDD 或GND, 以避免过多的功耗 低I/O电压   在数字I/O 电压引脚DVDD1和DVDD2低于2.6V的应用中,寄存器位PICTL.PADSC应设置为1,以获得DC特性表中所述的输出DC 特性 通用I/O   用作通用I/O 时,引脚可以组成3个8位端口,端口0、端口1 和端口2,表示为P0、P1 和P2;其中,P0和P1 是完全的8 位端口

Cache Memory

此生再无相见时 提交于 2020-02-03 20:05:20
为什么需要cache memory 在思考cache是什么之前我们首先先来思考第一个问题:我们的程序是如何运行起来的?我们应该知道程序是运行在 RAM之中,RAM 就是我们常说的DDR(例如 DDR3、DDR4等)。我们称之为main memory(主存)当我们需要运行一个进程的时候,首先会从Flash设备(例如,eMMC、UFS等)中将可执行程序load到main memory中,然后开始执行。在CPU内部存在一堆的通用寄存器(register)。如果CPU需要将一个变量(假设地址是A)加1,一般分为以下3个步骤: CPU 从主存中读取地址A的数据到内部通用寄存器 x0(ARM64架构的通用寄存器之一)。 通用寄存器 x0 加1。 CPU 将通用寄存器 x0 的值写入主存。 我们将这个过程可以表示如下: 其实现实中,CPU通用寄存器的速度和主存之间存在着太大的差异。两者之间的速度大致如下关系: CPU register的速度一般小于1ns,主存的速度一般是65ns左右。速度差异近百倍。因此,上面举例的3个步骤中,步骤1和步骤3实际上速度很慢。当CPU试图从主存中load/store 操作时,由于主存的速度限制,CPU不得不等待这漫长的65ns时间。如果我们可以提升主存的速度,那么系统将会获得很大的性能提升。如今的DDR存储设备,动不动就是几个GB,容量很大