通用寄存器

ARM处理器和体系结构介绍(Cortex-A9)

↘锁芯ラ 提交于 2019-12-21 18:07:29
ARM(Advanced RISC Machines) 概述 :有三种含义,它是一个公司的名称,是一类微处理器的通称,还是一种技术的名称。 技术特征 体积小、低功耗、低成本、高性能。 支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8/16位器件。 大量使用寄存器,指令执行速度更快。 大多数数据操作都在寄存器中完成。 寻址方式灵活简单,执行效率高。 指令长度固定。 嵌入式RISC微处理器 概述 :RISC(Reduced Instruction Set Computer)是精简指令集计算机,RISC把着眼点放在如何使计算机的结构更加简单和如何使计算机的处理速度更加快速上。RISC选取了使用频率最高的简单指令,抛弃复杂指令,固定指令长度,减少指令格式和寻址方式,不用或少用微码控制。 嵌入式CISC微处理器 概述 :传统的复杂指令级计算机(CISC)更侧重于硬件执行指令的功能性,使CISC指令及处理器的硬件结构更加复杂。 RISC和CISC的区别 ARM的基本数据类型 ARM采用32位架构,ARM的基本数据类型有以下3种。 Byte:字节,8bit。 Halfword:半字,16bit(半字必须与2字节边界对齐)。 Word:字,32bit(字必须与4字节边界对齐)。 注意 ARM 系统结构 v4 以上版本支持以上3种数据类型,v4 以前版本仅支持字节和字。

计算机基础系列一:计算机硬件

 ̄綄美尐妖づ 提交于 2019-12-21 04:41:30
一 为何要学习计算机基础 python是编程语言,即python是语言 语言有英语、法语、葡萄牙语等,但凡是语言,都是用来沟通的介质。 程序员编程的本质就是让计算机去工作,而编程语言就是程序员与计算机沟通的介质 程序员要想让计算机工作,必须知道计算机能干什么,怎么干的,这也就是我们必须学习计算机基础的原因 然而光有编程语言和硬件也并不能满足大家的编程需求,为什么这么说呢? 程序用编程语言写程序,最终开发出的结果就是一个软件,既然是软件,那就与腾讯qq、暴风影音、快播等软件没有区别了。这些软件必须运行在操作系统之上,你肯定会问:为何要有操作系统呢?没错,远古时代的程序员确实是在没有操作系统的环境下,用编程语言之间操作硬件来编程的,你可能觉得这没有问题,但其实问题是相当严重的,因为此时你必须掌握如何操作硬件的所有具体细节,比如如何具体操作硬盘(现在你得把硬盘拆开,然后你能看见的所有的东西,你都得研究明白,因为你编程时要用到它),这就严重影响了开发的效率,操作系统的出现就是运行于硬件之上,来控制硬件的,我们开发时,只需要调用操作系统为我们提供的简单而优雅的接口就可以了 所以一套完整的计算机系统分为:计算机硬件,操作系统,应用软件,如下图。因而我们的python编程之路分为计算机硬件基础,操作系统基础,和python编程三部分,就让我们先从计算机硬件学起吧 二 本节目标

计算机基础

早过忘川 提交于 2019-12-20 20:08:20
计算机系统分为:计算机硬件,操作系统,软件 一 编程语言的作用及与操作系统和硬件的关系: 1.编程语言的作用:用来定义计算机程序的形式语言,用来向计算机发出指令。 2.关系:硬件是基础,操作系统是用来管理硬件资源的。 二 应用程序&操作系统&硬件 1.硬件系统 :运算器+控制器+存储器+输入设备+输出设备 运算器:是负责算数运算与逻辑运算。 控制器:是负责发送和接收指令。与控制器共同组成了中央处理器(CPU)。 存储器:是用来存储正在进行程序,将要进行程序的数据及刚处理完的数据。 输入设备:是用来进行输入的设备。如键盘,扫描仪等。 输出设备:是用来进行输出的设备。如显示器,音箱等。 主板:安装了组成计算机的主要电路系统,一般有BIOS芯片,I/O控制芯片,键和面板开关接口,指示灯插接件,扩充插槽,主板及插卡的直流电源供电接插件等元件。 总线:以上所有的设备都通过总线连接,总线相当于人的神经。 2.操作系统:操作系统是控制和管理计算机软硬件资源、合理组织计算机工作流程,以及方便用户操作的程序集合。它的职责常包括对硬件的直接监管、对各种计算资源(如内存、处理器时间等)的管理、以及提供诸如作业管理之类的面向应用程序的服务等等。简单的说;操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。 3.应用程序:指为完成某项或多项特定工作的计算机程序,它运行在用户模式

系统调用

痞子三分冷 提交于 2019-12-18 22:57:29
由前2篇文章做基础,现在可以理解系统调用了。 用户空间栈&系统空间栈 中断&异常 系统调用定义 系统调用是内核提供的一系列强大的函数。它们在内核中实现,然后通过一定的方式(X86是软中断,也即门陷入)呈现给用户,是用户程序与内核交互的接口。 注意,我们在程序中用调用read、write函数时,这些不是系统调用函数,而是glibc库包装后,进行一些处理,然后再调用系统调用。如果想在程序中直接调用 的 话,需要调用_syscall()函数。 上下文(context) 上下文简单说来就是一个环境,相对于进程而言,就是进程执行时的环境。具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存信息等。 一个进程的上下文可以分为三个部分:用户级上下文、寄存器上下文以及系统级上下文。 用户级上下文: 正文、数据、用户堆栈以及共享存储区; 寄存器上下文: 通用寄存器、程序寄存器(IP)、处理器状态寄存器(EFLAGS)、栈指针(ESP); 系统级上下文: 进程控制块task_struct、内存管理信息(mm_struct、vm_area_struct、pgd、pte)、内核栈。 当发生进程调度时,进行进程切换就是上下文切换(context switch).操作系统必须对上面提到的全部信息进行切换,新调度的进程才能运行。而系统调用进行的模式 切换(mode switch)

Modbus 协议

♀尐吖头ヾ 提交于 2019-12-16 22:38:57
转载:https://www.cnblogs.com/DreamRecorder/p/9081127.html 一、Modbus 协议简介   Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。   当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。 1、在Modbus网络上转输   标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。   控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备

【汇编指令】一些基础的汇编指令

风流意气都作罢 提交于 2019-12-16 11:08:28
文章目录 汇编 ARM的六大类指令集---LDR、LDRB、LDRH、STR、STRB、STRH LDR指令LDR指令的格式为: LDRB指令 LDRH指令 LDM指令: STR指令STR指令的格式为: STRB指令STRB指令的格式为: STRH指令STRH指令的格式为: STM指令: - MOV[move] 伪指令 sub减法 add加法 - B:跳转 BL:branch and link ldm 读内存,写入多个寄存器 stm 把多个寄存器的值写入内存 汇编 ARM的六大类指令集—LDR、LDRB、LDRH、STR、STRB、STRH — LDR 字数据加载指令— LDRB 字节数据加载指令— LDRH 半字数据加载指令— STR 字数据存储指令— STRB 字节数据存储指令— STRH 半字数据存储指令 LDR指令LDR指令的格式为: LDR{条件} 目的寄存器,<存储器地址> LDR指令用于从存储器中将一个32位的字数据传送到目的寄存器中。该指令通常用于从存储器中读取32位的字数据到通用寄存器,然后对数据进行处理。当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。 指令示例: LDR R0,[R1]; 将存储器地址为R1的字数据读入寄存器R0。 LDR R0,[R1,R2] ; 将存储器地址为R1

计算机组成原理常见题(六)

那年仲夏 提交于 2019-12-13 05:32:41
1.假定用若干个16Kx1位的存储器芯片组成一个64Kx8位的存储器,芯片内各单元连续编址,则地址BFF0H所在的芯片的最小地址是(C) A.40000H B.60000H C.8000H D.0000H 2.假设一个同步总线的工作频率为33MHZ,总线有32位数据线,每个总线时钟传输一次数据,则该总线的最大数据传输率为(B) A.66MB/s B.132MB/s C.528MB/s D.1056MB/s 3.假设某条指令的一个操作数采用一次间接寻址方式,指令中给出的地址码为1200H,地址1200H中的内容为12FCH,地址12FCH中的内容为38B8H,地址38B8H中的内容为88F9H,则该操作数为() A.1200H B.12FCH C.38B8F D.88F9H 4.相联存储器是按(B)进行寻址访问的寄存器 A.地址指定方式 B.内容指定方式 C.堆栈访问方式 D.队列访问方式 5.假定某程序p由一个100条指令构成的循环组成,该循环共执行50次,在某系统S中执行程序p花了20000个时钟周期,则系统S在执行程序p时CPI是多少? 在20000个时钟周期中共执行100x50=5000条指令,CPI=20000/5000=4 CPI:执行每一条指令所花的时钟周期数 CPI=执行指令所花的时钟周期数/执行了多少条指令 6.设某机主存容量为16MB,Cache容量为16KB

DSP学习笔记(三)——TMS320F28335硬件结构

ε祈祈猫儿з 提交于 2019-12-11 17:02:24
本文转载连接: https://blog.csdn.net/wasser000/article/details/91843085 第二章 TMS320F28335 硬件结构 1 TMS320F28335 硬件概述 Tms320f28335主要有8个部分组成,由32位的cpu内核、集成内存、总线、DMA、DMA总线、中断管理、控制率加速器、外设总线、外设等部分。 总线为哈佛结构,cpu可在一个时钟周期完成对数据存储器与程序存储器的访问。 DMA总线,可以使特定模块直接与内存交换数据,不过cpu。 2 cpu架构 2.1 内核 F28335属于C28x+FPU(Floating Point Unit,浮点运算单元)的C28x 系列增强型DSP 控制器(Digital Signal Controllers,DSC),包括一个32位定点cpu一个32位浮点运算单元。 浮点数格式遵循ieee-754标准。(IEEE 754规定了四种表示浮点数值的方式:单精确度(32位)、双精确度(64位)、延伸单精确度(43比特以上,很少使用)与延伸双精确度(79比特以上,通常以80位实现)。只有32位模式有强制要求,其他都是选择性的。) 2.2 乘法器 F28335内嵌一个16×16位和32×32位的乘法器及乘累加核(MAC),可以在一个指令周期完成32×32位乘法进行累加运算。 2.3 移位器

ARM汇编指令

让人想犯罪 __ 提交于 2019-12-10 07:40:14
转载: arm汇编指令-Bingghost-博客园 学习嵌入式系统时的资料收集 ARM处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令6大指令 一、跳转指令 跳转指令用于实现程序流程的跳转 跳转指令分类 Ⅰ.使用专门的跳转指令 分支指令 B 带链接的分支指令: BL 带状态切换的分支指令 BX Ⅱ. 程序计数器PC控制 直接向程序计数器PC写入跳转地址值,通过向程序计数器PC写入跳转地址值 可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC等类似指令 可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用。 ARM指令集中的跳转指令可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以下4条指令: 1、B指令 B指令的格式为: B{条件} 目标地址 2、BL指令 BL指令的格式为: BL{条件} 目标地址 BL是另一个跳转指令,但跳转之前,会在寄存器R14中保存PC的当前内容, 因此,可以通过将R14的内容重新加载到PC中,来返回到跳转指令之后的那个 指令处执行。 该指令是实现子程序调用的一个基本但常用的手段 3、BLX指令 BLX指令的格式为: BLX 目标地址 BLX指令从ARM指令集跳转到指令中所指定的目标地址

【逆向】x64程序逆向基础

不想你离开。 提交于 2019-12-09 19:58:43
主要区别 // 1. 所有地址指针都是64位。 // 2. 增加和扩展新的寄存器,并兼容原32位版本的通用寄存器。 // 3. 原指令指针寄存器EIP扩展为RIP。 寄存器 1. 扩展原32位寄存器的64位版本,并增加8个新的64位寄存器(R8-R15)。 2. 新增加8个XMM寄存器(XMM8-XMM15)。 3. 64位寄存器兼容原32位寄存器。 通用寄存器:RAX(64位),EAX(32位),AX(16位),AL(0-7位),AH(8-15位) 新增寄存器:R8(64位),R8D(32位),R8W(16位),R8B(8位) 来源: https://www.cnblogs.com/SunsetR/p/12011720.html