2018-2019-1 20165225《資訊安全系統設計基礎》第四周學習總結
阿新 • • 發佈:2018-10-31
2018-2019-1 20165225《資訊安全系統設計基礎》第四周學習總結
教材學習內容總結
程式設計師的可見狀態如下:
暫存器
一個x86-64的CPU包含一組16個儲存64位的通用目的暫存器。這些暫存器用來儲存整數資料和指標。下圖展示了這16個暫存器:
Y86-64指令及位元組序列
課本P246圖4-2展示了Y86-64指令集,在後面的學習中也經常需要檢視並分析這個圖表。
Y86-64的順序實現
取指:從記憶體讀取指令位元組 譯碼:從暫存器檔案讀入最多兩個運算元 執行:算術/邏輯單元執行指令致命的操作、計算記憶體引用的有效地址;或增加/減少指標。 訪存:將資料寫入記憶體或從記憶體讀出資料。 寫回:最多可以寫兩個結果到暫存器檔案 更新:將pc設定成下一條指令的地址
SEQ順序
取指:將程式計數器暫存器作為地址,指令記憶體讀取指令的位元組
譯碼:從讀埠A、B同時讀暫存器值valA和valB
執行:根據指令型別,將算術/邏輯單元用於不同的目的
訪存:資料記憶體讀出或寫入一個記憶體字
寫回:兩個檔案埠分別用來寫ALU計算出來的值和寫從資料記憶體中獨處的值
pc更新
HCL
熟悉各個指令的執行過程和值的變化(圖就不一一列出了)
- movq指令:
irmovp 、rrmovq 、mrmovq 、rmmovq。
整數操作指令 :
addq 、 subq 、 andq 、xorq。
跳轉指令:
jmp 、 jle 、 jl 、je 、 jne 、 jge 、jg。
條件傳送指令:
cmovle 、 comvl 、 cmove 、 cmovne 、comvge 、 cmovg。
call指令將返回地址入棧,ret從這樣的呼叫中返回。
pushq指令入棧,popq指令出棧。
halt指令停止指令的執行。
本週錯題總結
週一才能補上
結對學習
- 本週依然和5221同學一起復習。
學習進度條
程式碼行數(新增/累積) | 部落格量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 3500行 | 12 | 14小時 | |
第一週 | 63/150 | 1/12 | 3小時 | |
第二週 | 150/150 | 2/12 | 10小時 | |
第三週 | 150/150 | 3/12 | 13小時 | |
第四周 | 97/150 | 4/12 | 10小時 |