ithzhang 2020-01-04
最近老是碰到x86 IA32 MIPS什么的对应的汇编又是有好几种,感觉很迷。遂查资料理清这些个概念如下(大部分内容来自维基百科,如有错误谢指正!)
微架构、指令集架构和汇编语言这三者的关系大概是这样的,我们分别来介绍下
指令就是要计算机执行某种操作的命令。
从计算机组成的层次结构来说 指令分为微指令(微程序级的指令,属硬件)、宏指令(若干机器指令组成的 属软件)和机器指令(二者之间 简称指令)。
我们这里只讨论机器指令,每一条机器指令指令可以完成一个独立的算术运算或逻辑运算操作(如加减移位等)。
一台计算机中所有机器指令的集合指令集。它存在于CPU内部,对CPU运算进行指导和优化。
从指令集来说,计算机分为我们熟悉的CISC(复杂指令集计算机)和RISC(精简指令集计算机)。这两种的设计理念和优缺点各不相同,这里不再展开。
微架构,是处理器核心的实现方式,是将一种给定的指令集架构在处理器中执行的方法(指令集的实现)。
通常认为只有具备独立的微架构研发能力的企业才算具备了CPU研发能力。
是计算机体系结构中与程序设计有关的部分,包含了基本数据类型,指令集,寄存器,寻址模式,存储体系,中断,异常处理以及外部I/O。指令集架构为汇编语言的设计师和编译器所见。
几种常见的架构(详细内容和异同网上的介绍很多)
汇编语言是机器语言的助记符,因此与指令集架构密切相关。上述的几种架构分别有自己对应的汇编语言,这里不再展开说。顺便提一句汇编风格
x86 和 x86-64/x64amd64 有两种汇编风格(详情见下表)