2017-07-29 176 views
0

廣泛的搜索讓我在3天的過程中循環,所以我要依靠你們來幫我休息一下。操作碼和操作數是如何定義在CPU中的?

爲什麼究竟高的和低的一個8位的順序執行這個動作,和8位序列進行行動。

我的直覺告訴我,CPU的電路硬連線一個二進制序列做一件事,另一件事做另一件事。那意味着不同的處理器與可能不同的芯片電路不會將一個特定的二進制序列定義爲與另一個相同的動作?

這就是爲什麼我們有組裝?我需要有人來確認和/或糾正我的假設!

回答

1

操作碼並不總是8位,但是,它在邏輯中被硬編碼/連線以隔離操作碼,然後根據該操作碼向您發送操作過程。想想你將如何在指令集模擬器中做到這一點,爲什麼邏輯會有所不同?邏輯比軟件語言更簡單,那裏沒有魔法。一,零,和,或者,不是那麼複雜。

沿着相同的路線,如果我被給了一個指令集文檔,並且你被給了一個指令集文檔並被告知創建一個處理器或者寫一個指令集模擬器。我們會產生完全相同的代碼嗎?即使變量名稱不同?不,理想情況下,我們會有功能相同的程序,它們都解析指令並執行它。邏輯也不例外,你給兩個工程師提供了兩個不同的處理器,它們在功能上是相同的,可能表現更好,等等。看看長期運行的處理器系列,尤其是x86,他們重新發明了每一對處理器 - 三年的指令集兼容舊版指令,有時增加新的指令。 ARM和其他人一樣。

並且存在不同的指令集ARM與x86不同於MIPS,因此指令中檢查的操作碼和/或位不同,因爲這些操作碼都不能簡單地查看8位,每個位都有一些位那麼如果這還不足以唯一地識別指令/操作,那麼您需要檢查更多的位,這些位是規則對每個體系結構非常特定的位。否則,如果它們是相同的,那麼它們有什麼不同的名稱。

這些信息在那裏你只是沒有看到正確的地方,有關於該主題的無數開放在線課程,谷歌應打擊某些頁面的書籍,以及您可以查看的開源處理器核心以及無數指令集模擬器與源代碼。