1. 程式人生 > >2018-2019-1 20165326 《資訊安全系統設計基礎》第四周學習總結

2018-2019-1 20165326 《資訊安全系統設計基礎》第四周學習總結

第四周學習總結

1、程式設計師可見狀態

  • 15個程式暫存器(RF)
  • 3個條件碼(CC)
  • 程式狀態(Stat)
  • 程式計數器(PC)
  • 記憶體(DMEM)

    2、Y86指令

    在Y86當中,暫存器也是有8個,每一個暫存器可以儲存一個字,也就是一個32位二進位制。條 件碼是一個一位二進位制的暫存器,儲存著最近的算術或邏輯運算所造成的影響的資訊。PC則是程式計數器,記錄當前正在執行的指令的地址。儲存器則是一個很大的位元組陣列,儲存著程式和資料,Y86的程式可以使用虛擬地址(類似於陣列的下標)來訪問儲存器,硬體和作業系統會將虛擬地址翻譯為實際的地址。最後一個程式狀態(stat),它則代表著程式的執行情況。
    它會指示程式是否正常執行,或者發生了某個特殊事件。


    指令編碼長度從1個位元組到10個位元組不等。一條指令含有一個單位元組的指令指示符,可能含有一個單位元組的暫存器指示符,還可能含有一個8位元組的常數字。

欄位fn指明是某個整數操作(OPq)、資料傳送條件(cmovXX)或是分支條件(jXX)。

所有的數值都用十六進位制表示

  • halt :這個指令會停止指令的執行。
  • nop:這是一個佔位指令,它不做任何事情,後續為了實現流水線,它有一定的作用。
  • xxmovl:這是一系列的資料傳送指令,其中r代表暫存器,m代表儲存器,i代表立即數。比如rrmovl指令,則代表將一個暫存器的值,賦給另外一個暫存器。
  • OPl:這包括4個整數操作指令,addl、subl、andl和xorl。他們只對暫存器資料進行操作。
  • jXX:包括7個跳轉指令,jmp,jle,jl,je,jne,jge,jg。根據分支指令的型別和條件碼的設定來選擇分支。
  • cmovXX:包括6個條件傳送指令,cmovle,cmovl,cmove,cmovne,cmovge和cmovg,只發生在兩個暫存器之間,不會將資料傳送到儲存器。
  • call:指令將返回地址入棧,然後跳到目的地址。
  • ret:call是過程呼叫,ret是返回。將返回地址入PC,並跳到返回地址。
  • pushl和popl:指令實現了地址的入棧和出棧

    3、HCL硬體控制語言

    名稱 表示
    AND &&
    OR ll
    NOT !
  • 與或非三種邏輯閘可以用一種與非門或者或非門實現

    HCL表示式 和 C 語言邏輯表示式的區別
  • 邏輯閘是持續輸出的,如果電路的輸入變化了,在一定的延遲之後,輸出也會相應的變化,而C表示式是在執行到的時候才會求值。
  • 兩者操作的值不同,邏輯閘只對值 0 和值 1 進行操作,而C 邏輯表示式允許引數是任意整數,0表示false,其它任意值都表示true。
  • C 邏輯表示式存在短路,比如對於a && b這個符號來說,C語言中的規定是如果前者為假,則後者不會再計算。而HCL當中沒有這種說法。

    儲存器和時鐘
  • 時鐘暫存器:簡稱暫存器,儲存單個位或字。時鐘訊號控制暫存器載入輸入值。
  • 隨機訪問儲存器:簡稱儲存器,儲存多個字,用地址來選擇該讀或者該寫哪個字.

    4、SEQ

    六個階段:
    取值→譯碼→執行→訪存→寫回→更新PC

    實現包括組合邏輯和兩種儲存器裝置:
  • 時鐘儲存器(程式計數器和l條碼暫存器)
  • 隨機訪問儲存器(暫存器檔案、指令儲存器和資料儲存器)