[英]Can a processor have same opcode for different sets of instructions?
我有一個處理器。 一些指令集是 AND、ADD、ANDI、ADDI。 這些看起來一樣,但事實並非如此。 我可以為看起來像相同的指令集分配相同的操作碼嗎,如下圖所示:
還是第六位足以區分它們?
在 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.