CPU的指令集是什么
指令集是底层软件与硬件交互的语言。一台计算机的全部指令称为该计算机的指令集。
现在的常见的指令集有:
MIPS指令集
ARM指令集
Intel x86指令集
指令集有两种形式,一种是人类可以编程书写的形式(也就是平时所说的汇编语言),另一种是计算机所能识别的形式(就是汇编语言对应计算机的机器语言)。
下面是一个典型的MIPS汇编语言:
add s1,s2,$3
汇编语言和高级语言不一样,变量不能任意指定,它只能操作寄存器中的变量,寄存器的个数在计算机中是有限制的,一般是32个。不同的指令集按照寄存器的顺序给他们排列编号0,1,2... 并且用号来表示寄存器。比如MIPS是使用s0-s7表示寄存器16−23,t0-$t7表示寄存器8-15。
寄存器的长度
寄存器一个字的长度有32和64,由于寄存器是CPU一次运算执行的变量单元,因此我们说的32位机器和64位机器最本质的区别就在于寄存器字的长度是32还是64。
寄存器中存的可能是值,也可能是一个地址。
什么是程序计数器(PC)
储存当前程序运行指令的寄存器就是程序计数器。
指令集的寻址方式
其实就是说如何根据寄存器找到一个值。比如MIPS的PC相对寻址,就是说要获取的值的地址是PC(程序计数器)的值与指令中常数的和。
CPU架构
CPU架构指的是全套CPU的机制,包括用什么CPU指令集,用什么寄存器,有什么寻址方式。一般一种指令集对应一种CPU架构。
ARM指令集
ARM指令集是在嵌入式设备中最常用到的指令集,像苹果和三星的移动设备都是使用这个ARM 架构。
Intel X86指令集
这个是PC中最常用到的指令集了,比如平常说的Intel 8086是第一款寄存器为16位长的体系结构。Intel 80386是第一款寄存器为32位长的指令集。
AMD64 指令集
AMD64是64位的。由AMD公司开发。更多用于服务器上。其后也为Intel所采用,称为Intel X86-64
具体产品
举具体产品的例子,iphone4使用的cpu是苹果A4处理器,iphone5使用的是苹果A5处理器,这两个实质上都是ARM架构。三星应用在智能手机和平板电脑上的Exynos处理器也是基于ARM架构的,由自家公司研发改造的。
Intel公司生产的所有CPU都兼容x86指令集,只不过后来它开发出了很多扩展指令集,比如酷睿系列i3/5/7就支持Intel avx扩展指令集,MMX(多媒体扩展指令集)。
比如戴尔的Inspiron笔记本电脑系列多使用AMD的CPU架构。
go中的5g/6g/8g
go编译器支持三种指令集:
amd64(即Intel x86-64或AMD64): 6g,最成熟的实现
386(即Intel X86-32) : 8g,是amd64到386机器的完美移植
arm: 5g,所以说go本质是支持在移动终端的开发
5g, 5l, 5c, 5a 分别表示 arm的go编译器,链接器,c编译器,汇编编译器