机器指令和汇编指令有什么区别?

3

我对计算机内部如何处理指令感到有些困惑。

在计算机内部,有两个“东西”来处理指令:汇编器和控制单元。

例如,一个伪MIPS指令可能会被传递给汇编器,汇编器会将它分解成相应的一组真实操作的MIPS指令,然后,我想,逐个将这些指令传递到控制单元进行解码。

这就是MIPS指令(无论是伪指令还是真实操作的指令)的处理方式。

但是机器指令呢?这只是输入到控制单元吗?汇编器与此有什么关系吗?机器指令与汇编指令有什么不同?


计算机中不包含汇编器。汇编器将汇编代码转换为机器码,然后在CPU中执行,通常被分解为功能单元,如算术/逻辑单元等。 - David Hoelzer
2个回答

11
机器码或机器语言是计算机中央处理器直接执行的一组指令。每条指令都执行非常具体的任务,例如在CPU寄存器或内存中对数据单元进行加载、跳转或ALU操作。直接由CPU执行的每个程序都由一系列这样的指令组成。它只包含1和0。
汇编语言是一种低级别的编程语言,用于计算机或其他可编程设备,其中语言和体系结构的机器码指令之间有非常强(通常是一对一)的对应关系。汇编语言通过称为汇编器的实用程序转换为可执行机器码。该机器码是机器语言。转换过程称为汇编或汇编源代码。
基本上,您可以将[*]中的这行理解为,在机器语言中,所有内容都由0和1组成,阅读时并不是很有用。在现实生活中,很难理解大量的0和1序列。因此,为了使事情更容易,汇编语言应运而生。它仅比机器语言高一级。它只是一组0和1的集合,以人类可读格式进行替换。
例如,假设 000表示加法的机器语言。 0001表示数字1。 0010表示数字3。 并且它们结合起来变成了00000010010,这太难理解了。所以为了使它更容易,您可以用汇编语言表示。
000 -> add
0001 -> some_integer1
0010 -> some_integer2

而且你可以写

add some_integer1,some_integer2 ;

现在阅读更容易了。 最后,汇编器将把这个汇编代码[add some_integer1, some_integer2;]转换成机器码[00000010010],CPU可以直接执行这些指令,使计算机能够用自己的语言获得指令,因此汇编适用于我们,机器语言适用于机器..:-)

要了解更多关于汇编语言的信息,请访问这里, 有关机器语言的信息,请访问这里


2
机器指令就是由1和0组成的位,输入计算机产生输出。汇编指令只是用汇编语言编写的代码,会被翻译成机器代码(1和0)并在计算机上使用。 需要澄清的是:汇编语言是一种与计算机交互的语言,就像其他语言一样。汇编语言被直接翻译成机器码,这是计算机唯一理解的指令类型。计算机使用机器码来处理信息,每个代码都处理特定任务。计算机不能直接理解汇编、c或C++,必须先将其翻译成机器码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接