指令集

ARM指令集----杂项指令

纵然是瞬间 提交于 2020-04-07 05:35:59
ARM指令集可以分为6类,即是跳转指令,数据处理指令,程序状态传输指令,Load、Store指令,协处理器指令和异常中断指令 跳转指令: 在ARM中有两种方式可以实现程序的跳转,一种是跳转指令,另一种是直接向PC寄存器写入目标地址的值 通过直接向PC寄存器写入目标寄存器的数字可以实现在4GB 地址空间的任意跳转,这种跳转又称为长跳转,如果在残肢令前面使用MOV LR,PC等指令,可以保存返回来的地址值,这样就实现了在4GB空间中的子程序调用 ARM的跳转指令可以从当前指令向前或者是向后的32位的地址进行空间跳转,这类跳转指令有一下4种 B 跳转指令 BL带换回的跳转指令 BLX 带返回的跳转和切换指令 BX 带状态切换的跳转指令 B和BL的区别在于,L决定是否将PC寄存器的数字保存到LR寄存器中, BL指令用于实现子程序的调用,子程序的返回地址可以将LR寄存器的值复制到PC寄存器来实现 数据处理指令 数据处理指令包括如下指令   MOV 数据传送指令   MVN 数据求反传送指令:MVN指令有以下用途:先寄存器传递一个负数,生成位的掩码,求一个数的反码   CMP 比较指令:   CMN 基于相反数的比较指令   TST 位测试指令 :TST指令通常是用于测试寄存器中某些位是1还是0   TEQ 测试相等指令:TEQ用来比较两个数是否相等ORR指令   ADD 加法指令

【华为云技术分享】如何将90%的代码自动迁移到鲲鹏平台上

荒凉一梦 提交于 2020-03-19 13:25:05
主讲人:华为云云享专家 张老师 大家好,今天要讲的主题是关于软件迁移,这是一个久远的话题,因为但凡牵扯到切换平台、CPU架构的变化,甚至一些语言版本的升级,都可能会面临到软件迁移的问题。今天我们就探讨一下软件移植过程的原理,以及如何进行软件迁移。 在软件移植的过程当中,如何帮助开发者提升效率,如何把华为沉淀下来的软件开发以及移植的经验反馈给开发者,帮助开发者加速软件开发的进度,降低成本,这是我们一直关注的问题,为此,我们还推出了鲲鹏的开发套件,帮助用户做软件的移植,以及做基于鲲鹏平台的性能加速。 其实一提到软件移植,如果是做了比较底层软件的话,大家可能会用到一些 汇编这样的底层语言 。 它和机器的硬件架构强相关 ,当你在从一个平台切换到另外一个平台的时候,这些强相关的语言势必要 进行一次代码移植, 跟我们所采用的编程语言以及移植的平台环境强相关。当我们用汇编代码或者是用这种编译型语言的时候,就会面临着一些移植的问题和挑战,有些问题通过编译器能解决, 有些问题特别是一些低阶的代码或者比较底层的代码, 就要手工去查手册 , 然后去把它相应的转换成新平台所使用的机器码。 上图列出了鲲鹏处理器和x86处理器的指令差异,列了一个简单的两个数相加,两个int型相加的这样一个简单程序。通过GCC编译完之后,通过OMGD,就能看到指令的具体的格式形式以及相应的对应的汇编代码。可以看出

计算机基础二

和自甴很熟 提交于 2020-03-08 20:22:32
一、cpu 详解 CPU 按照指令集可以分为精简指令集 CPU 和复杂指令集 CPU 两种,区别在于前者的指令集精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳;但是若要做复杂的事情,就要由多个指令来完成。后者的指令集每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。因为指令执行较为复杂所以每条指令花费的时间较长,但每条个别指令可以处理的工作较为丰富。 1、x86-64的含义 x86: 是针对 CPU 的型号或者说架构的一种统称 。 64 位: CPU 的位数指的是 CPU 一次性能从内存中取出多少位二进制指令 ,64bit 指的是一次性能从内存中取出 64 位二进制指令 。 CPU具有向下兼容性:64位的CPU 既能运行 32 位的程序也能运行 64 位的程序 2 、 内核态与用户态( 代表 cpu 的两种工作状态 ) (1)内核态:运行的程序是操作系统,可以操作计算机硬件 (2)用户态:运行的程序是应用程序,不能操作计算机硬件 内核态与用户态的转换: 应用程序的运行必然涉及到计算机硬件的操作,那就必须有用户态切换到内核态下才能实现,所以计算机工作时在频繁发生内核态与用户态的转换。 3 、多线程与多核芯片 (1)2 核 4 线程 ( 假 4 核 ) : 2 核代表有两个 cpu , 4 线程指的是每个 cpu 都有两个线程

[转帖]AVX-512究竟意味着什么?

那年仲夏 提交于 2020-03-07 07:32:28
AVX-512究竟意味着什么? https://baijiahao.baidu.com/s?id=1653677566154792925&wfr=spider&for=pc 心游科技 发布时间:19-12-23 10:57 英特尔和AMD不约而同地选择在临近年底的时候发布了自家的HEDT桌面高端平台新品:10代酷睿X系列和第3代ThreadRipper线程撕裂者。作为一对儿早已“知己知彼”的老对手,两者HEDT平台的产品特性甚至都非常的接近。相比于各自的MSDT产品,都拥有更大规模的核心数量;都支持4通道内存以实现更高的数据带宽,都提供了更多的PCIe通道以支持更多的扩展设备。唯一的区别来自指令集:酷睿X已经是第3代支持AVX-512指令集的产品,而AMD的新TR则刚刚实现对AVX2的支持。两者的3个共同特性,都是从物理规格上进行了提升,很容易理解。但AVX-512指令集对于大多数人来说就显得有些看不见摸不着了。今天我们就来聊聊AVX-512指令集究竟会带来哪些性能上的提升。 什么是指令集?什么是AVX-512? CPU是由晶体管组成的逻辑电路构成的,比如我们熟知的与非门就是一种最简单的数字逻辑电路,除此之外还会有或非门、异或门、异或非门、施密特触发门等等。这些简单逻辑电路只能处理完整运算中的一部分,通过大量组合这些简单逻辑电路形成通用计算单元,并输入指令和数据

【转帖】超能课堂(186) CPU中的那些指令集都有什么用?

帅比萌擦擦* 提交于 2020-03-06 07:59:31
超能课堂(186) CPU中的那些指令集都有什么用? https://www.expreview.com/68615.html 我们都知道之所以计算机能够进行计算,主要靠的是大规模集成电路中由晶体管组成的逻辑电路。这些逻辑电路使得计算机能够进行运算及判断。但对于一个简单逻辑电路来讲,它只能进行一个完整运算中的部分操作,所以人们通过组合这些简单逻辑电路,这样就可以让计算机进行复杂的运算了。当CPU设计人员将这些组合逻辑电路制作成通用运算单元后,我们将一定格式的指令及数据输入,即可得到运算结果。而当需要的运算种类越来越多、运算越来越复杂后,CPU设计人员就将这些指令进行划分重构,组成一整套进行运算的集合,这就是 指令集 。 图片来自 Unsplash 不过以上面向CPU指令集设计师及CPU微架构设计师的,CPU指令设计者将不同一些计算机操作设计成指令,然后微架构设计师通过这些指令的格式等进行微架构设计。而对于软件开发者,更多接触到的是软件层面的汇编语言,通过汇编语言指令就可以让程序员控制计算机了。计算机软硬件架构是有层次的,随着高级语言的开发,GUI的出现,更多的人可以方便的使用计算机。虽然编程语言越来越“高级”,软件越来越华丽,但是其依然需要通过CPU中的海量晶体管进行运算,调用指令集。 从英特尔开发出8086处理器开始,x86指令集就开始形成了,此后英特尔推出了80286

AVX指令集及TF对环境要求

陌路散爱 提交于 2020-03-04 05:26:55
AVX(Advanced Vector Extensions,高级矢量扩展)指令集借鉴了一些AMD SSE5的设计思路,进行扩展和加强,形成一套新一代的完整SIMD指令集规范。英特尔AVX指令集主要在很多方面得到扩充和加强。 关于指令集和AVX指令集 指令集是指CPU能执行的所有指令的集合,每一指令对应一种操作,任何程序最终要编译成一条条指令才能让CPU识别并执行。CPU依靠指令来计算和控制系统,所以指令强弱是衡量CPU性能的重要指标,指令集也成为提高CPU效率的有效工具。 CPU都有一个基本的指令集,比如说目前英特尔和AMD的绝大部分处理器都使用的是X86指令集,因为它们都源自于X86架构。但无论CPU有多快,X86指令也只能一次处理一个数据,这样效率就很低下,毕竟在很多应用中,数据都是成组出现的,比如一个点的坐标(XYZ)和颜色(RGB)、多声道音频等。为了提高CPU在某些方面的性能,就必须增加一些特殊的指令满足时代进步的需求,这些新增的指令就构成了扩展指令集。 AVX(Advanced Vector Extensions,高级矢量扩展)指令集借鉴了一些AMD SSE5的设计思路,进行扩展和加强,形成一套新一代的完整SIMD指令集规范。 英特尔AVX指令集主要在很多个方面得到扩充和加强。 =============================================

嵌入式课堂整理1

≯℡__Kan透↙ 提交于 2020-03-01 17:05:19
一、嵌入式开发概述 1.嵌入式技术是什么? 答:在已有的硬件上移植操作系统;在操作系统之上做上层应用开发,在操作系统之下做底层开发。 2嵌入式软件与非嵌入式软件的区别? 答:最大的区别是有无操作系统。嵌入式技术有操作系统,非嵌入式没有操作系统。 3.嵌入式开发与单片机开发的区别? 答:嵌入式开发有操作系统,单片机开发属于传统开发,只有软件和硬件,没有操作系统。 4.传统开发的缺点? 答:软件移植能力差(适配平台能力差);开发人员能力要求需要软硬件掌握的都很好。 5.嵌入式开发的优点? 答:嵌入式在软硬件之间加入了操作系统;操作系统具有管理软件资源和硬件资源的作用。属于多任务机制,提供了丰富的网络协议,提供了开源软件和库。 二、嵌入式开发方向 1.嵌入式上层应用软件开发。(精通一门语言;熟悉一款操作系统;熟悉数据结构算法) 2.嵌入式底层系统软件开发。(精通C语言;理解操作系统的实现;熟悉硬件的工作原理;熟悉汇编) 3.嵌入式工程师。 三、作业 CPI体系结构的种类、特点及应用场景?(内容参考csdn的博主@printfd) 1、ARM ARM架构,过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。 特点:体积小、低功耗、低成本

2.25嵌入式设计(拓展)

天大地大妈咪最大 提交于 2020-03-01 13:56:17
本次拓展的灵感来源于“嵌入式=!ARM”这个来自我老师课堂教学中的一个式子,(当然他强调这个式子是不能这么写的,只是便于我们理解),这就引起了我好奇。 ARM是什么? ARM 即Advanced RISC Machines的缩写,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。 首先,ARM是一家公司的名称。英国ARM 公司是全球领先的16/32 位嵌入式 RISC 微处理器解决方案的供应商,向全球各大领先电子公司提供高性能、低成本和高效率的RISC 处理器、外设和系统芯片技术授权。ARM 还为开发完整系统提供综合技术支持。ARM 的微处理器核技术广泛用于便携式通信产品、手持运算、多媒体和嵌入式解决方案等领域,已成为RISC 标准。 ARM公司是一家既不生产芯片(fabless)也不销售芯片(chipless)的公司,它通过出售芯片技术授权,建立起新型的微处理器设计、生产和销售商业模式。更重要的是,这种商业模式取得极大的成功,采用ARM技术IP核的微处理器遍及各类电子产品:汽车、消费电子、成像、工业控制、海量存储、网络、安保和无线等市场,ARM技术几乎无处不在。 ARM公司是一家知识产权(IP)供应商,它与一般的半导体公司最大的不同就是不制造芯片且不向终端用户出售芯片,而是通过转让设计方案,由合作伙伴生产出各具特色的芯片

初识ARM嵌入式系统

倖福魔咒の 提交于 2020-03-01 12:28:35
ARM嵌入式系统的基本结构和常见的ARM微处理器 ARM被称为嵌入式微处理器核。 ARM嵌入式系统由3部分组成,即嵌入式系统硬件平台,嵌入式操作系统(代码)和嵌入式系统应用。 1、嵌入式系统硬件平台主要是指各种嵌入式处理器和外围设备等,如基于ARM核的STM32XX处理器、51系列单片机等。 2、嵌入式操作系统(代码)是指嵌入式硬件平台上运行的代码和操作系统。目前主流的嵌入式操作系统是基于C语言(或汇编语言)的嵌入式Linux、UCLinux和uc/os-II等。 一般而言,Linux操作系统具有比较完善的网络接口支持;UCLinux操作系统被用在一些不需要“内存管理单元”(MMU,Memory Management Unit)的嵌入式平台中;而uc/os-II系统是典型的实时操作系统,可满足对实时性要求比较高的场合,如汽车电子油门、车载高速CAN网络等,具有非常快的响应时间。 除了上述介绍的几种嵌入式操作系统外,当前主流的电子产品中,还广泛使用Android、MeeGo等系统。这些系统主要用在智能手机和平板电脑上。 3、嵌入式系统应用是以嵌入式系统硬件平台的搭建、嵌入式操作系统的成功移植和运行为前提的。这一部分内容运行在嵌入式操作系统的上层,完成特定的功能目标。 通常情况下,不同的系统需要根据具体的项目需要设计不同的嵌入式应用程序。在嵌入式系统中,系统应用并不是必需的

基于虚拟机的软件保护技术

别说谁变了你拦得住时间么 提交于 2020-03-01 01:44:35
本文并不打算对vmprotect或其它某款软件安全套件进行深入讨论,而着眼于研究基于虚拟机的软件保护技术的起源、思想和实现。 现有软件保护技术概述 传统的软件保护技术,根据针对对象不同,可分为反静态调试和反动态调试两大类。反静态调试主要针对对象为反汇编器。反汇编器通过面向特定平台的反汇编引擎(如PC平台即为X86反汇编引擎),将编译器生成的二进制文件还原成汇编代码,有经验的逆向工程师可以据此还原出算法等核心运算机制。反静态调试主要是通过特定区段加密等方式,将核心信息保护起来,只在运行期才通过解密等算法动态还原,阻碍反汇编器静态地将二进制文件还原成汇编码。 反动态调试主要针对对象为调试器,由于经过静态加密的二进制码最终必须解密才能执行,因此通过Ollydbg等动态调试器仍然可以加以查看,反动态调试通过检测调试器和屏蔽调试端口等各种反调试技术阻止逆向工程师通过调试器跟踪软件进程的运行情况,使得软件的运行时状况始终保持处于黑盒状态。 被动型软件保护概念上述两种保护方案均采取主动出击的策略,意图“御敌于国之外”,中心思想是一个“挡字”,阻止逆向工程是窥视软件内部机理,但盾与矛的对抗总是无休止的,并没有任何一种主动型软件保护手段能真正彻底阻断逆向工程,因此另一种“以人为本”的被动型软件保护技术开始走向斗争舞台的中央。 被动型软件保护手段基于一个假设