通用寄存器

第二季-专题7-ARM跑快了---时钟初始化

Deadly 提交于 2019-11-29 04:14:32
专题7-ARM跑快了---时钟初始化 一.概念解析 1.时钟脉冲信号 时钟脉冲信号:按一定的电压幅度,一定的时间间隔连续发出的脉冲信号。时钟脉冲信号是时序逻辑的基础,它用于决定逻辑单元中的状态核实更新。数字芯片中众多的晶体管都工作在开关状态,他们的导通和管段动作无不适按照时钟信号的节奏进行的。 2.时钟频率 时钟脉冲频率:在单位时间(如1秒)内产生的时钟脉冲个数。 3.时钟源 时钟信号有两种产生的方式: 晶振和锁相环 PLL 晶振: (1)晶振全称晶体振荡器,是用石英晶体经精密切割磨削并且镀上电极焊上引线做成。这种晶体有一个很重要的特性,如果给他通电,他就会产生机械震荡,他们有一个很重要的特点,其震荡频率与他们的形状,材料,切割方向等密切相关。由于适应晶体化学性能非常稳定,热膨胀系数非常小,其震荡频率与非常稳定,由于控制几何尺寸可以做到很精密,因此,其谐振频率也很精确。 (2)晶体震荡器时钟的有点包括结构简单和噪声低,以及可以客户提供精确的定制频率等方面;但另一方面,它的缺点也比较明显,例如其频率仅由晶体决定,通常是特定晶体被制成客户所需的振荡器,导致生产成本高、交贷周期较长,不利于客户加快产品上市时间,而且难以获得非标准的频率。 锁相环PLL (1)PPL(锁相环)合成器是一种更为复杂的系统时钟源

寄存器介绍

a 夏天 提交于 2019-11-28 23:41:42
x86-64的所有寄存器都是与机器字长(数据总线位宽)相同,即64位的,x86-64将x86的8个32位通用寄存器扩展为64位(eax、ebx、ecx、edx、eci、edi、ebp、esp),并且增加了8个新的64位寄存器(r8-r15),在命名方式上,也从”exx”变为”rxx”,但仍保留”exx”进行32位操作,下表描述了各寄存器的命名和作用。 /*--> */ /*--> */ 描述 32 位 64 位 通用寄存器组 eax rax ecx rcx edx rdx ebx rbx esp rsp ebp rbp esi rsi edi rdi - r8~r15 浮点寄存器组 st0~st7 st0~st7 XMM 寄存器组 xmm0~xmm7 xmm0~xmm15 来源: https://www.cnblogs.com/mazhimazhi/p/11432924.html

单片机期末复习

安稳与你 提交于 2019-11-28 23:34:57
一、硬件结构 1.1部分引脚说明 RST:复位引脚,两个机器周期的高电平后复位 ALE:锁存低八位地址 EA:高电平时,访问内部程序存储器(ROM) P0:双向IO口、分时复用-低八位地址,数据总线 P1:双向IO口 P2:双向IO口,访问外部存储器时,提供高八位地址总线 P3:双向IO口,有第二功能 1.2存储器 物理上分为:4 个空间 即片内ROM、 、 片外ROM(程序存储器) 片内RAM、 、 片外RAM(数据存储器) 逻辑上分为: : 3 个空间 , 程序内存(ROM) ( 片内 、 外 ) 统一编址 MOVC 数据存储器 ( 片内) ) MOV 数据存储器(片外) MOVX 1.2.1程序存储器(ROM 作用:存储用户程序和表格常数 特殊单元: 0000H:复位后从这里开始执行程序 中断单元: 外中断0 (INT0 ) 0003H 定时器0 (T0 ) 000BH 外中断1 (INT1 ) 0013H 定时器1 (T1 ) 001BH 串行口(UART ) 0023H 1.2.2内部数据存储器(RAM 通用工作寄存器组 00~1FH共32个,四组通用寄存器,即(四组R0~R7) 可以使用RS1(PSW.4)RS0(PSW.3)来切换寄存器区 RS1 RS0 寄存器区 内存地址 00 0区 00-07H 01 1区 08-0FH 10 2区 10-17H 11 3区 18

Alientek I.MX6UL Linux Note,Welcom Come To Discuss

淺唱寂寞╮ 提交于 2019-11-28 20:21:58
第六章 Contex-A7 MPCore架构 Contex-A处理器运行模型   以前的ARM处理器有七种运行模式,现在有九种,新增加Monitor和Hyp运行模式。 模式 描述 USR(User) 用户模式,非特权模式,大部分程序运行的时候处于此模式 FIQ 快速中断模式,进入FIQ中断异常 IRQ 一般中断模式 SVC(Supervisor) 超级管理员模式,特权模式,宫操作系统使用 MON(Monitor) 监视模式,这个模式用于安全扩展模式,指用户安全 ABT(Abort) 数据访问终止模式,用于虚拟存储以及存储保护 HYP(Hyp) 超级监视模式,用于虚拟化扩展 UND(Undef) 未定义指令终止模式 SYS(System) 系统模式,用于运行特权级的操作系统任务 记忆(UFIS MAHUS) Contex-A寄存器组   ARM提供了16个32位通用寄存器(R0 R15)供软件使用,前15个(R0 R14)可以用作通用的数据存储,R15是程序计数器PC,用来保存将要执行的命令,ARM还提供了一个当前程序状态寄存器CPSR和一个备份程序寄存器SPSR,SPSR是CPSR的备份。 总结一下, Cortex-A内核寄存器组成如下(共43个): ①、 34个通用寄存器,包括 R15程序计数器 (PC),这些寄存器都是 32位的。 ②、 8个状态寄存器,包括 CPSR和

RV32FDQ/RV64RDQ指令集(1)

大憨熊 提交于 2019-11-28 12:13:55
Risc-V架构定义了可选的单精度浮点指令(F扩展指令集)和双精度浮点指令(D扩展指令集)。 Risc-V架构规定: 处理器可以选择只实现F扩展指令子集而不支持D扩展指令子集;但是如果支持了D扩展指令子集,则必须支持F扩展指令子集。 Risc-V架构规定的浮点数符合IEEE754 2008规则,可以从下面的链接了解浮点数格式的详细信息: https://www.cnblogs.com/german-iris/p/5759557.html Risc-V规定,如果支持单精度浮点指令或者双精度浮点指令,则需要增加一组独立的通用浮点寄存器组,包括32个通用浮点寄存器,标号位f0到f31。如果仅支持F扩展指令子集,则每个通用寄存器是32位的,如果支持D扩展那指令子集,则每个通用寄存器是64位的。 Risc-V架构规定,如果支持单精度浮点指令或者双精度浮点指令,需要增加一个浮点控制状态寄存器fcsr,该寄存器是一个可读可写的csr寄存器。 fcsr寄存器包含浮点异常标志域(fflags),不同的标志位表示不同的异常类型。如果浮点运算单元在运算中出现了相应的异常,则会将fcsr寄存器中对应的标志位设置为1,且会一直保持累积。软件可以通过写0的方式单独清除某个异常标志位。 根据IEEE-754标准,浮点运算需要指定舍入模式(rounding mode),Risc

2.5 习题

你离开我真会死。 提交于 2019-11-28 11:21:37
题2.1 8086/8088 通用寄存器的通用性表现在何处?8个通用寄存器各自有何专门的用途?哪些寄存器可作为存储器寻址方式的指针寄存器? 答:8086、8088通用寄存器既可用存储数据,也可用于存放运算的中间值、运算结果。8个通用寄存器的专门用途如下:   AX:字乘法、字除法、字I/O、累加器   AL:字节乘法、字节除法、字节I/0、十进制算术运算   AH:字节乘法、字节除法   BX: 存储器指针   CX:串操作、循环控制中的计数器   CL: 移位计数器   DX:字乘法、字除法、间接I/0   SI: 存储器指针(串操作源指针)   DI:存储器指针(串操作目的指针)   BP:存储器指针(默认为堆栈段)   SP:指令指针 可作为存储器寻址方式指针寄存器为:BX、SI、DI、BP 题2.2 从程序员的角度看,8086/8088有多少个可访问的16位寄存器?有多少个可访问的8位寄存器? 答:AX,BX,CX,DX,SI,DI,BP,SP,DS,CS,ES,SS,IP,FLAG。共14个16位寄存器。AH,AL,BH,BL,CH,CL,DH,DL共8个8位寄存器。 题2.3 寄存器AX与寄存器AH和AL的关系如何?请写出如下程序片段中每条指令执行后寄存器AX的内容: MOV AX,1234H AX=1234H MOV AL,98H    AX=1298H MOV AH

字节码解释执行引擎

主宰稳场 提交于 2019-11-28 10:49:40
虚拟机是如何执行方法中的字节码指令的。许多Java虚拟机的执行引擎在执行Java代码的时候都有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,在解释执行时,虚拟机执行引擎是如何工作的。 解释执行 不论是解释还是编译,也不论是物理机还是虚拟机,对于应用程序,机器都不可能如人那样阅读、理解,然后就获得了执行能力。大部分的程序代码到物理机的目标代码或虚拟机能执行的指令集之前,都需要经过图中的各个步骤。很容易就会发现图中下面那条分支,就是传统编译原理中程序代码到目标机器代码的生成过程,而中间的那条分支,自然就是解释执行的过程。如今,基于物理机、Java虚拟机,或者非Java的其他高级语言虚拟机(HLLVM)的语言,大多都会遵循这种基于现代经典编译原理的思路,在执行前先对程序源码进行词法分析和语法分析处理,把源码转化为抽象语法树(Abstract Syntax Tree,AST)。对于一门具体语言的实现来说,词法分析、语法分析以至后面的优化器和目标代码生成器都可以选择独立于执行引擎,形成一个完整意义的编译器去实现,这类代表是C/C++语言。也可以选择把其中一部分步骤(如生成抽象语法树之前的步骤)实现为一个半独立的编译器,这类代表是Java语言。又或者把这些步骤和执行引擎全部集中封装在一个封闭的黑匣子之中,如大多数的JavaScript执行器。

通用寄存器和内存

强颜欢笑 提交于 2019-11-28 10:18:47
计算机在运行时,需要提供数据的容器; 容器由内存和cpu提供,内存提供的容器比较多;cpu提供的容器较少但其中的数据计算速度快; cpu提供的容器就是寄存器,寄存器有特定的数据宽度,决定了该寄存器存储数据的范围; 1.常用的32位寄存器 32位通用寄存器还可以拆分来使用;将低16位当做16位寄存器; 一些16位寄存器也可以继续拆分;高8位和低8位分别当做8位寄存器来使用; 2.mov指令 mov 目标操作数,源操作数 作用:拷贝源操作数到目标操作数 注意: 源操作数可以是立即数、通用寄存器、段寄存器、内存单元; 目标操作数可以是通用寄存器、段寄存器、内存单元; 操作数的宽度必须一样; 源操作数和目标操作数不能同时为内存单元; mov的语法: 3.从内存中读写数据 内存由一段连续的内存单元组成,每个内存单元有8位; 32位机正常的寻址范围为0~FFFFFFFF,也就是4GB; 但这不是确定的,有些内存区域可能被固定无法访问,并且操作系统也可能扩展内存; 数据有3中类型: 字节 ->byte,宽度为8位 字 ->word,宽度为两个字节16位 双字 ->dword,宽度为两个字32位 用指令从内存中读写数据时,需要指明数据的类型 例如: mov dword ptr ds:[0x0012FF34],0x12345678 4.内存寻址的几种方式 1)[立即数] 从内存中读

Linux x86和x64的区别

孤者浪人 提交于 2019-11-28 10:05:33
0x01:寄存器分配的不同 (1)64位有16个寄存器,32位只有8个。但是32位前8个都有不同的命名,分别是e _ ,而64位前8个使用了r代替e,也就是r _。e开头的寄存器命名依然可以直接运用于相应寄存器的低32位,而剩下的寄存器名则是从r8 - r15,其低位分别用d、w、b指定长度; (2)32位使用栈帧来作为传递的参数的保存位置,而64位使用寄存器,分别用rdi,rsi,rdx,rcx,r8,r9作为第1-6个参数,rax作为返回值; (3)64位没有栈帧的指针,32位用ebp作为栈帧指针,64位取消了这个设定,rbp作为通用寄存器使用; (4)64位支持一些形式的以PC相关的寻址,而32位只有在jmp的时候才会用到这种寻址方式; 0x02:(新增)汇编指令的不同 mov、push、pop扩展了movq系列的mov和pushq以及popq用来操作quad word。 补充: (1)movabsq不是32位的扩展,是纯新增的指令。用来将一个64位的字面值直接存到一个64位寄存器中。因为movq只能将32位的值存入,所以新增了这样一条指令 (2)64位的汇编代码在ret之前可能会加一句rep,这里的rep没有实际意义,只是出于AMD处理器的原因,避免jmp所到达的地方直接就是ret,这样会使得处理器运行更快一些 0x03:函数调用的不同 (1)x_64的参数通过寄存器传递

(1)——计算机硬件组成

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-28 03:10:30
一、CPU 功能:获取程序指令、对指令进行编码、执行。 (1)程序控制:通过执行指令来控制程序执行顺序。 (2)操作控制:一条指令需要有若干操作信号操作对应部件按指令进行操作。 (3)时间控制:对操作信号的出现时间、持续时间及出现时间顺序进行严格控制。 (4)数据处理:cpu根本任务; 组成:运算器、控制器、寄存器、内部总线; 二、运算器:接受 控制器 的命令完成计算机的各种 算术 和 逻辑运算 。 (1)算术逻辑单元(ALU):负责处理数据,实现数据的算术运算和逻辑运算。 (2)累加寄存器(AC):通用寄存器,为ALU提供一个工作区,存放运算结果。运算器至少有一个累加寄存器。 例:减法运算,先将被减数放到AC中,再从内存存储器中取出减数同AC的内容相减,并将结果放到AC中。 (3)数据缓冲寄存器(DR) 1)主要作用:作为CPU和内存、外部设备之间数据传输的中转站和操作速度上的缓冲; 2)单个累加器结构的运算器,数据缓冲器可作为操作数寄存器; 3)存放和隔离对内存存储器进行读写指令和数据; (4)状态条件寄存器(PSW):保存由算术指令、逻辑指令和测试结果建立各种条件码内容,只要分为:状态标志和控制标志; 三、控制器:控制整个CPU的工作,包括处理异常事件。 组成:指令控制逻辑、时序控制逻辑、总线控制逻辑、中断控制逻辑。 (一)指令控制逻辑——工作流程:取指令、指令译码