1. 程式人生 > >計算機是如何區分讀到的記憶體是指令還是資料

計算機是如何區分讀到的記憶體是指令還是資料

指令和資料都是應用上的概念。組合語言,通過編譯器編譯,最後送給CPU的都是二進位制數,那麼CPU在一堆紛繁複雜的二進位制,0110000110001中如何區分指令和資料呢?

  我們需要明白以下幾點:

(1)每臺機器的指令,其格式和程式碼所代表的含義都是硬性規定的,故稱之為面向機器的語言,也稱為機器語言。二進位制,作為一種機器碼,計算機可以直接識別,不需要進行任何翻譯

(2)計算機硬體主要通過不同的時間段來區分指令和資料,即:取指週期(或取指微程式)取出的既為指令,執行週期計算機載入的第一條肯定是指令,然後根據這條指令去取二進位制數,如果這條指令要取運算元,那麼取出來的就是運算元;如果這條指令要取下一條指令,那麼取出來得就是指令。

(3)把指令和資料分開放是為了安全和邏輯結構清晰。

(4)雖然指令和資料存放的格式一樣,但是訪問他們的時機不同。在取指令時期,cpu通過指令流取指令,存放在指令暫存器, 然後解釋並執行指令;在執行指令時期,cpu通過資料流取資料, 存放在資料暫存器。 所以指令流取的是指令,資料流取的是資料。

計算機區分指令和資料有以下2種方法:

  1. 通過不同的時間段來區分指令和資料,即在取指令階段(或取指微程式)取出的為指令,在執行指令階段(或相應微程式)取出的即為資料。
  2. 通過地址來源區分,由PC提供儲存單元地址的取出的是指令,由指令地址碼部分提供儲存單元地址的取出的是運算元。