1.關于計算機的指令系統
下面的這個就是我們的一個簡單的計算機里面涉及到的指令:
m就是我們的存儲器里面的地址,可以理解為memory這個意思,r可以理解為rom這樣的單詞的首字母,幫助我們去進行這個相關的指令的記憶,不要去死記硬背;L也是我們的內存里面的跳轉到的地址
1)運算類指令:就是存儲器里面的內容和寄存器里面的內容相加,這個結果存儲到我們的寄存器里面去;
2)傳送類指令:我們的數據是在存儲器里面,怎么和這個寄存器里面的數據相加呢,這個時候就是需要進行load,也就是把我們的存儲器里面的數據加載到寄存器里面進行相加的操作;
我們的結果存儲到寄存器里面之后,需要重新轉載到我們的存儲器里面,這個就是store操作
3)轉移類指令:就是我們的存儲器里面需要執行的下一條的這個指令的具體地址;
2.指令在計算機里面是如何表示的
上面的這個畢竟是幫助我們程序員進行理解的,實際上這個指令在我們的計算機里面還是0101這樣的代碼罷了;
下面的這個就是針對于一個指令進行的分析:
1)指令是兩個字節,也就是16個bit位數,第一個字節的高四位表示的是操作碼,就是我們需要對于這個指令進行那些操作,低四位就是寄存器的編號,就是哪一個寄存器參與下面的這個運算;
2)第二個字節就是我們的存儲器里面的具體的地址,表示的就是我們的存儲器里面的哪一個數據需要和我們的寄存器進行相關的運算;
3)在我們的這個里面,操作碼是四種情況,對應的就是我們的這個文章里面的第一小節里面的四個指令,實際上因為這個是四位,所以實際上可以表示的操作碼情況應該是2的四次方,也就是16哥可能得情況,但是我們只會使用其中4個,這個為我們的后續的擴展提供了一個切口;
4)同樣的道理,這個寄存器的編號也是16個可能得結果,但是我們只給出了4個寄存器,方便后面進行這個相關的擴展;
5)右邊的這個圖片里面也是給出來了這個正確的指令的實例和錯誤的例子,幫助我們去進行指令執行的內容的相關的理解,通過對于這個指令進行翻譯,首先確定這個需要進行什么運算,然后是這個寄存器是哪一個,存儲器里面的運算的地址是哪一個,然后我們就可以根據實際的情況判斷我們的這個運算是不是合法的了;
我們就可以根據實際的情況判斷我們的這個運算是不是合法的了;