ISA(例如MIPS)和汇编语言之间的区别

时间:2014-01-29 02:14:32

标签: assembly mips isa

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

3 个答案:

答案 0 :(得分:8)

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

汇编语言通常与ISA具有1-1关系,但可以以不同方式实现。有时汇编代码可以执行一整套ISA级别指令。

汇编语言是一组抽象的ISA操作码,逻辑和指令,允许变量/宏/函数/方法/等。它们可以是非常基本的(意味着几乎1-1映射),或者它们可以支持更复杂的操作,如结构编程块。

答案 1 :(得分:5)

我怀疑这些术语有任何“权威”定义,但这里有一些感觉,它们可能不完全重叠:

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

尽管如此,它们显然有很多重叠,所以在非规范性文本中,如果它们在某些情况下可以互换使用,那将是完全可以理解的。

答案 2 :(得分:3)

ISA表示指令集架构。正如这些词暗示这是基于指令的架构,某些特定的处理器被设计为。某个地方的某个人知道该架构的作用以及使其完成它所做的操作的指令(机器代码)。

汇编语言是编程语言的术语。与Java或Python不同,没有一个标准体为一种汇编语言定义。理想情况下,对于每个ISA,都有汇编语言,但对于特定的ISA,汇编语言之间可能存在多个或微妙的变体并非少见。汇编语言基本上由汇编程序定义,有时候汇编程序这个词也用来表示语言本身,我试图将汇编语言,编程语言和汇编程序分开,程序员实用程序采用汇编语言并解析它并将其转换为机器代码。

汇编语言理想情况下是一种编程语言,在每种汇编语言助记符和指令集(ISA)中的指令之间存在一对一的关系。但情况并非总是如此,有些东西可以让你的生活更轻松,就像分支标签一样。通常有许多指令可以插入一些数据(可能是要打印的字符串)。并且有一些宏与C中的宏不同,你可以在一个地方编写一些你想要重用的代码,然后只使用宏。

MIPS是一家公司,它使得处理器和ISA的名称以及汇编语言和处理器的名称都具有MIPS的名称。就像英特尔处理器一样,汇编语言和指令集可以正确地称为英特尔(尽管我们也看到了x86和其他变体)。 ARM,相同的交易,处理器,架构,指令集,汇编语言。

通常,指令集的发明者(如同一群人一起工作,不一定是一个单独的芯片工程师),为该指令集创建文档,通常包括机器代码。除此之外,通常还有汇编语言语法。通常,参考手册中的语法是汇编程序的起点。不常见这里定义的指令实际上是伪指令,nop是常见的,一些指令集不想浪费操作码而是汇编程序编码添加r0 + 0或r0,r0或一些基本上做的事情只是一个真正的alu指令。 MIPS有一些常用的汇编语言指令/助记符,这些汇编语言指令/助记符是汇编程序为您生成的伪指令,您必须记住不要在分支阴影中使用这些指令(延迟插槽,无论您喜欢使用哪个术语),或者您将要或应该使用警告。

相关问题