微架构、指令集架构与汇编语言的关系

ithzhang 2020-01-04

最近老是碰到x86 IA32 MIPS什么的对应的汇编又是有好几种,感觉很迷。遂查资料理清这些个概念如下(大部分内容来自维基百科,如有错误谢指正!)

微架构、指令集架构和汇编语言这三者的关系大概是这样的,我们分别来介绍下

微架构、指令集架构与汇编语言的关系

指令集

指令就是要计算机执行某种操作的命令。

从计算机组成的层次结构来说 指令分为微指令(微程序级的指令,属硬件)、宏指令(若干机器指令组成的 属软件)和机器指令(二者之间 简称指令)。

我们这里只讨论机器指令,每一条机器指令指令可以完成一个独立的算术运算或逻辑运算操作(如加减移位等)。

一台计算机中所有机器指令的集合指令集。它存在于CPU内部,对CPU运算进行指导和优化。

从指令集来说,计算机分为我们熟悉的CISC(复杂指令集计算机)和RISC(精简指令集计算机)。这两种的设计理念和优缺点各不相同,这里不再展开。

微架构

微架构,是处理器核心的实现方式,是将一种给定的指令集架构在处理器中执行的方法(指令集的实现)。

通常认为只有具备独立的微架构研发能力的企业才算具备了CPU研发能力。

指令集架构(处理器架构)

是计算机体系结构中与程序设计有关的部分,包含了基本数据类型,指令集,寄存器,寻址模式,存储体系,中断,异常处理以及外部I/O。指令集架构为汇编语言的设计师和编译器所见。

几种常见的架构(详细内容和异同网上的介绍很多)

  • x86 的32位  -> IA32  CISC 
    • 英特尔32位架构(英语:Intel Architecture, 32-bit,缩写为IA-32),常被称为i386、或x86。
    • 由英特尔公司于1985年推出的指令集架构。它是8086架构的延伸版本,可支持32位运算,首次应用在Intel 80386芯片中。
    • 对许多编程语言来说,IA-32与i386是同义词。
  • x86 的64位  -> x86-64/x64/amd64  CISC
  • IA64 是Intel与hp共同开发的 
    • 此架构与x86及x86-64并不相容,操作系统与软件需使用IA-64专用版本。
    • 不多见
  • ARM架构(Advanced RISC Machine)      RISC
    • 主要应用于移动端和嵌入式,价格低,能耗低。
  • MIPS架构(Microprocessor without interlocked piped stages)RISC
    • 龙芯
    • 用于电子产品、网络设备、个人娱乐设备与商业设备
  • PowerPC架构(Performance Optimization With Enhanced RISC – Performance Computing) RISC
    • 曾用于Xbox、Mac的处理器和服务器等

汇编语言

汇编语言是机器语言的助记符,因此与指令集架构密切相关。上述的几种架构分别有自己对应的汇编语言,这里不再展开说。顺便提一句汇编风格 

x86 和 x86-64/x64amd64 有两种汇编风格(详情见下表)

  • Intel汇编  Microsoft Windows/Visual C++使用
  • AT&T汇编  GNU/Gas使用

微架构、指令集架构与汇编语言的关系

相关推荐