指令集架构名义上定义了机器可以执行的每条指令,以及效果、条件和可能的异常等。
指令是根据其操作的数据来定义的,这些数据称为操作数。通常,指令会聚集成组,从而允许可能的操作矩阵,即opcodes和操作数(包括寻址方式)。 MIPS I-Type、J-Type 是这些块的示例,称为格式。
指令是 ISA 的关键。例如,如果没有指令可以引用该寄存器(例如作为操作数),则提供寄存器是没有意义的。这可能就是我们称之为指令集架构的原因,因为我们都是通过指令定义的视角来实现寄存器和行为的。
指令集架构定义了机器码处理器的行为,以及给定某些状态和要执行的指令的处理器的行为。
机器代码中的指令是二进制数字串,CPU 解释又执行。
在机器代码中,没有汇编指令、标签、变量名等……;这些都是汇编语言的产物。在机器代码中,如果您愿意的话,表示 CPU 操作的指令(包含操作码和操作数)和数据的二进制数字串都被 CPU 简单地视为数字(位串)。
汇编语言几乎可以 1:1 转换为机器代码指令,尽管指令、宏、伪指令、数据和其他东西使得这更像是近似值而不是事实。
通常,芯片制造商会定义汇编语言以及指令集架构,但是汇编语言并不是 ISA 的必要条件。 ISA 的真正含义是理解哪些数字(位串)对处理器有什么意义。
事实上,芯片制造商和/或其他人(例如微软、Linux)通常也会定义一个应用程序二进制接口,其中包括一个调用约定帮助软件消费者编写可互操作的软件。
计算机字和汇编指令之间的双射映射
是和否:是,如果汇编指令是指每个可能指令的操作和行为的定义。
我想说的是机器代码的位串之间的映射和处理器如何解析编码的详细定义以及它们的作用,即它们对计算机状态的影响。