2014-01-29 1323 views
6

ISA(例如MIPS)和汇编语言之间的区别是什么?我看到一些他们似乎被用作同义词的背景。MIPS和汇编语言之间的区别

+0

只有非常混淆的用法“MIPS”作为“汇编语言”的同义词。 MIPS ISA的程序可以用MIPS汇编语言编写。 – markgz

回答

8

指令集体系结构(ISA)与特定处理器内的机器操作物理对应。这意味着ISA列出了可以由特定处理器执行的任何和所有指令以及操作码。

汇编语言通常与ISA有1-1的关系,但可以用不同的方式实现。有时汇编代码可以执行一整套ISA级别的指令。汇编语言是一组抽象的ISA操作码,逻辑和指令,允许变量/宏/函数/方法/等等。它们可以是非常基本的(意味着几乎1-1映射),或者它们可以支持更复杂的操作,如结构化编程块。

5

我怀疑有这些条款的任何“权威”的定义,但这里有一些感官中,他们可能不完全重叠:

  • 虽然“ISA”规范了一个公共接口的处理器应该作为编写与实现ISA的多个处理器二进制兼容的程序的基础,“汇编语言”可以指代特定处理器实现的内容,而不必与其他实现兼容。
  • 更一般地说,“一个ISA”是一个标准文档,而“汇编语言”是一种编程语言。
  • ISA通常不仅会指定指令和它们的名称,还会为它们指定二进制编码(例如操作码和参数编码)。术语“汇编语言”仅指代指令的文本形式,而不涉及它们的编码。

也就是说,它们显然有很多重叠,所以在非规范性文本中,如果它们在一些情况下可互换使用,这将是完全可以理解的。

+0

ISA还规定了一切的所有语义,例如缓存一致性语义。还有CPU响应外部中断信号的功能。汇编语言不能对IRQ引脚施加电压,但ISA仍然必须定义发生了什么。 –

3

ISA意味着指令集架构。正如这些词暗示这是基于指令的架构,某些特定的处理器被设计为。有人在某个地方知道该架构的功能和指令(机器代码),以使其完成所做的工作。

汇编语言是编程语言的术语。与Java或Python不同,没有一个标准机构为一种汇编语言定义。理想情况下,每个ISA都有一个汇编语言,但并不罕见,特定ISA的汇编语言之间可能存在多个或微妙的变体。汇编语言本质上是由汇编语言定义的,汇编语言有时也用于表示语言本身,我尝试将汇编语言,编程语言和汇编程序分离出来,并使用汇编语言对其进行解析并将其转换为机器码。

汇编语言理想情况下是一种编程语言,其中每个汇编语言助记符与指令集(ISA)中的指令之间都有一对一的关系。但事实并非总是如此,有些事情可以让你的生活变得更容易,就像分支标签一样。通常有很多指令可以插入一些数据(你可能想要打印的字符串)。还有一些宏与C中的宏没有什么不同,你可以在一个地方写一些你想要重复使用的代码,然后简单地使用宏。

MIPS是一个公司,使处理器和ISA的名称和汇编语言的名称和处理器都将名称MIPS。就像英特尔处理器一样,汇编语言和指令集可以被称为英特尔(尽管我们也看到x86和其他版本)。 ARM,相同的处理器,处理器,体系结构,指令集,汇编语言。

通常,指令集的发明者(如在一起工作的人群中不一定是单个芯片工程师)为该指令集创建文档,通常包括机器代码。除此之外,通常还有汇编语言语法。通常,参考手册中的语法是汇编程序的起点。并不是所有在这里定义的指令实际上都是伪指令,nop是常见的,有些指令集不想浪费操作码,而是汇编器编码添加r0 + 0或r0,r0或其他基本上是这样的东西没有什么,但是是一个真正的艾鲁指导。 MIPS有一些常用的汇编语言指令/助记符,它们是汇编程序为您生成的伪指令,您必须记住不要在分支影子中使用这些指令(延迟槽,您喜欢使用的任何术语),或者您将会或应该被警告。