簡體   English   中英

處理器可以對不同的指令集使用相同的操作碼嗎?

[英]Can a processor have same opcode for different sets of instructions?

我有一個處理器。 一些指令集是 AND、ADD、ANDI、ADDI。 這些看起來一樣,但事實並非如此。 我可以為看起來像相同的指令集分配相同的操作碼嗎,如下圖所示:

ISA的例子
還是第六位足以區分它們?

在 ISA 的實際示例中,我有 13 個指令集(AND、ADD、LD、ST、ANDI、ADDI、CMP、JUMP、JE、JA、JB、JBE、JAE)。 由於指令集的大小,我認為操作碼位數應該是 4 位,而且所有不同的指令集都應該有不同的操作碼,如 ADD 0001、ADDI 0010、AND 0011 和 ANDI 0100 等。

絕對地。 大多數 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

所有這些指令都使用另一個寄存器作為指向 memory 的指針間接加載eax寄存器。使用哪個寄存器取決於位模式。 這不是最好的例子,但這是許多 CPU 都在做的事情。

編輯:現在使用 x86 程序集作為示例,在此示例中使用不同的操作模式時不會完全更改字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM