assembly 一个处理器可以对不同的指令集使用相同的操作码吗?

f0ofjuux  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(146)

我有一个处理器。一些指令集是AND,ADD,ANDI,ADDI。这些看起来一样,但他们不是。我可以分配相同的操作码看起来一样的指令集如下屏幕截图:

还是第六位就足以区分它们?
在伊萨的实际例子中,我有13个指令集(AND,ADD,LD,ST,ANDI,ADDI,CMP,JUMP,JE,JA,JB,JBE,JAE)。由于指令集的大小,我认为操作码位的数量应该是4位,并且所有不同的指令集应该有不同的操作码,如ADD 0001,ADDI 0010,AND 0011,和ANDI 0100等。

zmeyuzjn

zmeyuzjn1#

当然。大多数CISC CPU汇编语言实际上都是这样做的。我将使用6502汇编x86汇编来说明,但当然也可以编写自己的MIPS汇编程序来实现这一点。

mov eax,[eax]  ;encoded as 8B 00
    mov eax,[ecx]  ;encoded as 8B 01
    mov eax,[edx]  ;encoded as 8B 02
    mov eax,[ebx]  ;encoded as 8B 03

所有这些指令都使用另一个寄存器作为指向内存的指针间接加载eax寄存器。使用哪个寄存器取决于位的模式。虽然不是最好的例子,但这是许多CPU都做的事情。
EDIT:现在示例使用x86 Assembly,在本示例中使用不同的操作模式时,不会完全改变字节。

相关问题