|
cpu里面有個(gè)譯碼器,可以確定當(dāng)前CS:ip指向機(jī)器碼對應(yīng)要執(zhí)行的指令,包括指令的長度等等信息,cpu的指令是經(jīng)過編碼的,所以中間有個(gè)譯碼的過程
可以參考計(jì)算機(jī)體系結(jié)構(gòu)里面關(guān)于cpu指令設(shè)計(jì)相關(guān)的知識。 CPU內(nèi)有一個(gè)編譯器,從IP指向的第一個(gè)字節(jié)開始,先查找操作碼,一個(gè)字節(jié)不夠,再加上下一個(gè)字節(jié),直到找到符合的操作碼,然后按操作碼對操作數(shù)的要求湊夠操作數(shù),這就是一條指令。
現(xiàn)在INTEL的CPU融合了RISC技術(shù),有點(diǎn)X86虛擬機(jī)的概念,近似一RISC的CPU內(nèi)核外面罩一個(gè)CISC代碼的X86編譯器(X86指令集可以看作CPU公開外放的函數(shù)接口)。這還沒完,X86編譯器出來并不都是可以直接控制累加器、半加器、移位器、觸發(fā)器等電子器件,可以稱為中間碼,這些代碼在CPU內(nèi)可以優(yōu)化,最常見的是把多條指令融合成一條指令再去指揮硬件電路。 |
|
|