x86架构

CPU指令集架构基础学习

你说的曾经没有我的故事 提交于 2020-01-14 23:17:51
在最初接触C/C++的时候,我对程序编译后的指令非常着迷,循序渐进的学习了C/C++语言编译器生成汇编语言的模式。 就像是语言翻译一样,我们需要做到直接阅读x86等汇编代码,并且能够将其还原成原始的C/C++语句,这是学习逆向最有效的方法。 CPU是执行程序机器码的硬件单元,相关概念包括以下几项: **指令码:**是CPU处理的底层命令,典型的底层命令有:将数据在寄存器之间转移,操作内存,计算数值等指令,每一类CPU都有自己的指令集架构,CPU品牌有Intel,AMD,IBM和Cyrix,IDT,VIA威盛,国产龙芯等。 **汇编语言:**为了让程序员少掉头发而创造出来的,是人类可以易于读写。 **CPU寄存器:**每一种CPU都有其固定的通用寄存器(GPR),x86的CPU中有8个GPR,x64里面有16个GPR,ARM中有16个GPR,CPU寄存器就是一种存储单元,他可以无差别存储所有类型的临时变量,如果写一个程序只用到了8个32位变量,CPU自带的寄存器就可以完成任务。 需要一种将高级编程语言转成CPU可以处理的底层机器语言,这种程序就是编译器(Compiler)。 0x01 指令集架构 x86的指令集架构中,opcode(汇编指令对应的机器码)长度是不同的。 ARM属于RISC(精简指令集)架构 CPU,这种指令集在设计之初就力图保持各个opcode长度一致,最初的时候

电脑的32位与64位是指的什么

无人久伴 提交于 2019-12-27 05:49:46
64 位势不可挡 从某种意义上讲,处理器的发展直接影响着整个IT行业的发展水平,电脑核心从16位到32的转变对IT行业产生的巨大影响就是一个强有力证明。从386、486直到奔腾系列的CPU都是32位,大多数情况32位计算已经能满足现阶段人们的需要。然而随着互联网等技术的发展,对内存的需求越来越大,比如大型服务器,每秒钟处理的数据量就超过2GB,32位就难以满足需求了。 32位的风云十年 在信息技术领域,“位数”是衡量计算机性能的重要标准之一。位数在很大程度上决定着计算机的内存最大容量、文件的最大长度、数据在计算机内部的传输速度、处理速度和精度等性能指标。在近十年的时间里,X86-32位平台由于其性价比高,获得广泛应用。 按照以前的习惯,我们把基于80X86的CPU架构称作X86结构,这是Intel公司在1978年发布其第一块16位的CPU(5MHz 8086)时开发的,1981年IBM推出的第一台PC中使用的也是X86指令,同时电脑中为提高浮点数据处理能力而加的X87芯片系列数学协处理器则使用X87指令,后来将X86指令集和X87指令集统称为X86指令集。为了保证计算机能够继续运行以往开发的各类应用程序以保护和继续软件资源,后续的CPU(包括大多数第三方处理器厂商)继续使用X86指令集,采用这种指令集的CPU系统被称作X86架构。 64位异军突起

CPU 的18条

孤街浪徒 提交于 2019-12-26 05:02:37
1.主频 主频也叫时钟频率,单位是MHz,用来表示CPU的运算速度。CPU的主频=外频×倍频系数。很多人认为主频就决定着CPU的运行速度,这不仅是个片面的,而且对于 服务 器来讲,这个认识也出现了偏差。至今,没有一条确定的公式能够实现主频和实际的运算速度两者之间的数值关系,即使是两大处理器厂家Intel和AMD,在这点上也存在着很大的争议,我们从Intel的产品的发展趋势,可以看出Intel很注重加强自身主频的发展。像其他的处理器厂家,有人曾经拿过一快1G的全美达来做比较,它的运行效率相当于2G的Intel处理器。 所以,CPU的主频与CPU实际的运算能力是没有直接关系的,主频表示在CPU内数字脉冲信号震荡的速度。在Intel的处理器产品中,我们也可以看到这样的例子:1 GHz Itanium芯片能够表现得差不多跟2.66 GHz Xeon/Opteron一样快,或是1.5 GHz Itanium 2大约跟4 GHz Xeon/Opteron一样快。CPU的运算速度还要看CPU的流水线的各方面的性能指标。 当然,主频和实际的运算速度是有关的,只能说主频仅仅是CPU性能表现的一个方面,而不代表CPU的整体性能。 2.外频 外频是CPU的基准频率,单位也是MHz。CPU的外频决定着整块主板的运行速度。说白了,在台式机中,我们所说的超频,都是超CPU的外频(当然一般情况下

X86与ARM

落花浮王杯 提交于 2019-12-25 10:09:08
文章目录 1 intel(英特尔) 1.1 intel简介 1.2 intel产品 1.3 X86指令集 2 ARM 2.1 ARM简介 3 X86指令集和ARM指令集的区别 3.1 X86指令集和ARM指令集的区别 1 intel(英特尔) 1.1 intel简介 intel: 美国的一家以研发、制造、销售CPU为主的公司 世界上第一块CPU在1971年诞生于英特尔:intel 4004 INTegrated ELectronic(集成电子) 1.2 intel产品 intel产品发展历程如下: 1978年 --> intel 8086 1980年 --> intel 80186 1982年 --> intel 80286 1985年 --> intel 80386 1989年 --> intel 80486 1993年 --> Pentium(80586) 1.3 X86指令集 指令集架构: CPU所有指令的集合,简称指令集。 X86指令集架构,简称 X86架构 或 X86指令集: 指的是CPU指令集,并非是CPU硬件结构。 指的是以8086处理器为鼻祖的一系列指令集,并非是某一款处理器的指令集。 X86架构一直延续到了今天,并非到586就结束了。 我们需要知道X86架构的强大并不在于它本身,而在于围绕着它所建立起来的:软件生态。AMD公司的CPU也是X86架构

armeabi和armeabi-v7a 以及x86

蹲街弑〆低调 提交于 2019-12-22 11:43:17
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 原文:http://blog.csdn.net/dxpqxb/article/details/7721156 armeabi和armeabi-v7a 在我们android APK的根目录有一个 libs文件夹,此文件夹下包含了armeabi 和armeabi-v7a两个文件夹,我们的c代码编译成的本地库(各种.so)就会放在这两个文件夹其中的一个。那armeabi-v7a 与 armeabi有什么区别,都是什么意思呢? armeabi和armeabi-v7a是表示cpu的类型,我们知道一般的手机或平板都是用arm的cpu(mips的就悲催的被忽视了),不同的cpu的特性不一样,armeabi就是针对普通的或旧的arm v5 cpu,armeabi-v7a是针对有浮点运算或高级扩展功能的arm v7 cpu。 在android.mk里可配置以下宏: TARGET_CPU_API := armeabi APP_ABI := armeabi 当你编译时出现一些链接动态库的undefine错误,或你的apk运行时出现装载.so动态库错误时,不妨看一下这个cpu类型的配置是否有误。 ======================================================================

[日常] 修复了grub引导问题

只谈情不闲聊 提交于 2019-12-03 08:13:19
上周遇到的神奇引导问题竟然被鬼使神差的修复好了。因为我的电脑是64位的也就是x86_64架构,并且是UEFI模式下,但是之前装的grub一直是grub-传统,并且一直是i386-pc平台也就是32位的,所以才一直修不好。 今天我重新安装了以下grub,运行的下面的命令安装grub-efi,并且重新执行了下安装,自动就把我的引导修好了,修复的过程中看到了很多x86_64-efi的信息飘过,原来是没有这些64位系统的目录的,终于成功了啊 apt-get install grub-efi grub-install 来源: https://www.cnblogs.com/taoshihan/p/11784620.html

ARM、X86和AI处理器的区别

你。 提交于 2019-12-03 07:30:43
ARM、X86和AI处理器的区别 目前主要的处理器架构有: X86: Intel, AMD, 海光, 兆芯 ARM: 华为,飞腾,华芯通,Cavium,Ampere,富士通,亚马逊 POWER:IBM, 中晟宏芯 MIPS:龙芯 Alpha:申威 ARM 架构是开放性的商业 IP 授权,x86 是封闭架构,美国 Intel 和 AMD 对知识产权处于垄断地位 (PS:现在华为等国内公司研发多以ARM架构为主) ARM 比 x86 架构的优势和劣势 优势: 1) 物理核心更多,适用于当前数据中心主流的分布式计算场景;例如大数据、分布式存储、HPC 等; 2) 能耗更能,节能环保;与同样性能的 x86 处理器相比,功耗低 20%以上; 劣势: 1) 单核性能稍弱于 x86; 2) 相比于 Intel AVX512,向量指令运算能力偏弱,在 HPC 部分场景性能低于 x86;对通用场景无任何影响; 什么是异构? 1) 从计算单元角度来看,x86 处理器之外的计算单元,都可认为是异构单元,例如 GPU,FPGA 加速卡等; 2) 从软件系统集群角度来看,基于不同处理器的服务器可以认为是异构;例如基于 E5-2650v4 的大数据集群使用基于 Gold 5115 或者鲲鹏 916 的服务器来扩容,就属于扩容异构节点。 什么是众核? 众核是相对于单核而言,即最早的芯片只有一个核,到后来的双核

Android .so abi兼容,通用armeabi-v7a和arm64-v8a架构的方法

匿名 (未验证) 提交于 2019-12-03 00:26:01
写在前面:请先了解 Android的.so文件、ABI和CPU的关系 http://blog.csdn.net/xx326664162/article/details/51163905 、 armeabi-v7a、 arm64-v8a、 mips、 mips64、 x86、 x86_64等abi的原理后,很久以前一般都只是用armeabi在做兼容。现在其实市面上主流的手机都支持armeabi-v7a和arm64-v8a。请看如下简介: 各版本的分析如下所示: mips / mips64: 极少用于手机可以忽略,有兴趣的可以百度一下。 x86 / x86_64: x86 架构的手机都会包含由 Intel 提供的称为 Houdini 的指令集动态转码工具,实现 对 arm .so 的兼容,再考虑 x86 1% 以下的市场占有率,x86 相关的两个 .so 也是可以忽略的 armeabi: ARM v5 这是相当老旧的一个版本,缺少对浮点数计算的硬件支持,在需要大量计算时有性能瓶颈 armeabi-v7a: ARM v7 目前主流版本,一般市面上的骁龙系列或者麒麟系列的处理器绝大部分都是这种架构 arm64-v8a: 64位支持 所谓的ARMv8架构,就是在MIPS64架构上增加了ARMv7架构中已经拥有的的TrustZone技术、虚拟化技术及NEON advanced

所生成项目的处理器架构“MSIL”与引用“Microsoft.AspNet.Scaffolding.12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=x86”的处理器架构“x86”不匹配。

匿名 (未验证) 提交于 2019-12-02 22:10:10
生成成功后: 3>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3270: 所生成项目的处理器架构“MSIL”与引用“Microsoft.AspNet.Scaffolding.12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=x86”的处理器架构“x86”不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改您的项目的目标处理器架构,以使您的项目与引用间的处理器架构保持一致,或者为引用关联一个与您的项目的目标处理器架构相符的处理器架构。 一、解决方案 一个前辈看了看我的引用里没有他,然后去该项目的 bin目录删除了 Scaffolding.dll 文章来源: 所生成项目的处理器架构“MSIL”与引用“Microsoft.AspNet.Scaffolding.12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=x86”的处理器架构“x86”不匹配

AndroidStudio解决Device supports x86,but APK only supports armeabi-v7abi...问题

一笑奈何 提交于 2019-12-02 16:42:31
在进行TensorFlow模型的安卓移植时,碰到了这个问题 这里面x86, armeabi-v7abi等都指的是CPU的架构类型。而查看自己的CPU架构类型可以通过命令行查找。 问题起因 :GitHub上下载了一个源码,导入Androidstudio的时候报出这个错误。 我的电脑是x86类型的,而在他源码中并没有对这个类型进行支持。 解决步骤 : 1 、在build.gradle的defaultConfig里面加上自己的类型,如图红框中所示,是我后来加上去的。你缺少了什么就加上相应的。 2 、在libs目录下面也要对应的添加目录x86,并将armeabi-v7a中的文件全部复制过来,如图所示,红框的目录原本是没有的,这里新建的。 我这里x86里面装的是从包含so文件的armeabi-v7a文件夹复制过来的。 这个问题前阵子困扰了好久,参考网上的博客里面都只有上面的第一步,这样我会出现INSTALL_FAILED_NO_MATCHING_ABIS问题,然后就慢慢走远了… 今天继续拿来解决这个问题,按上面的步骤就成功解决了。 第二天更新 上面这么做以后编译已经没有问题,但是在加载库文件的时候出现报错。 报错发生在下面的代码位置: 控制台报错: java.lang.UnsatisfiedLinkError: dlopen failed:…/lib/x86/libtensorflow