2019-2020-1學期20212428《網路空間安全專業導論》第三週學習總結
第六章
虛擬機器Pep/8的重要特性
虛擬機器:為了模擬真實機器的重要特徵而設計的假想機器
虛擬機器Pep/8:有七個暫存器,其中包括:
程式計數器(PC),其中包含下一條即將被執行的指令的地址
指令暫存器(IR),其中包含正在被執行的指令的一個副本。
累加器(是一種特殊的儲存暫存器),用來儲存操作的資料和結果
指令格式通常一條指令基本結構包括兩方面的內容:操作碼和運算元,操作碼決定要完成的操作,運算元指參加運算的資料及其所在的單元地址。操作碼和運算元,操作碼決定要完成的操作,運算元指參加運算的資料及其所在的單元地址。 在計算機中,操作要求和運算元地址都由二進位制數碼錶示,分別稱作操作碼和地址碼,整條指令以二進位制編碼的形式存放在儲存器中。
程式計數器可以理解為指標,位數取決於記憶體指令儲存器的地址位數.
位數取決於編碼時規定的指令長度.
通用暫存器取決於機器位數.
立即定址
指令的地址欄位指出的不是運算元的地址,而是運算元本身,這種定址方式稱為立即定址。立即定址方式的H特點是指令執行時間很短,因為它不需要訪問記憶體取數,從而節省了訪問記憶體的時間。
直接定址
直接定址是一種基本的定址方法,其特點是:在指令格式的地址的欄位中直接指出運算元在記憶體的地址。由於運算元的地址直接給出而不需要經過某種變換,所以稱這種定址方式為直接定址方式。在指令中直接給出參與運算的運算元及運算結果所存放的主存地址,即在指令中直接給出有效地址。
機器語言與組合語言
機器語言
計算機是不能直接識別我們所編寫的C程式或者Java程式的。它只能識別機器語言,而機器語言是用二進位制程式碼表示的計算機能直接識別和執行的一種機器指指令系統令的集合。
早期計算機就是指可以執行機器指令,進行運算的機器。在我們常用的PC機中,有一個晶片,就是我們常說的CPU可以完成前面所說的計算機的功能,但是每一種這樣的微處理器(CPU)由於硬體設計和內部結構的不同,就需要用不同的電平脈衝來控制,使它工作。所以每一種微處理器都有自己的機器指令集,也就是機器語言。用機器語言編寫程式,程式設計人員要首先熟記所用計算機的全部指令程式碼和程式碼的涵義。手程式設計序時,程式設計師得自己處理每條指令和每一資料的儲存分配和輸入輸出,還得記住程式設計過程中每步所使用的工作單元處在何種狀態。這是一件十分繁瑣的工作。編寫程式花費的時間往往是實際執行時間的幾十倍或幾百倍,直觀性差,還容易出錯。 那麼該怎麼辦呢?這時候組合語言便產生了。
組合語言
組合語言的主體是彙編指令。彙編指令和機器指令的差別在於指令的表示方法上,彙編指令是機器指令便於記憶的書寫格式。組合語言是直接面向處理器的程式設計語言。處理器是在指令的控制下工作的,處理器可以識別的每一條指令稱為機器指令。每一種處理器都有自己可以識別的一整套指令,稱為指令集。處理器執行指令時,根據不同的指令採取不同的動作,完成不同的功能。
執行組合語言程式步驟:
組合語言程式輸入至彙編器,彙編器輸出機器程式碼程式
分支程式與迴圈程式
分支程式
迴圈程式迴圈結構是指在滿足某一條件下進行迴圈操作,直到不滿足條件,或者在迴圈體內break跳出迴圈
虛擬碼:一種表示演算法的語言
變數:出現在虛擬碼演算法中的名字,引用的是記憶體中儲存值的位置。
賦值:把值放入變數的方法.
輸入/輸出:從外部世界向計算機中輸入資料,將結果輸出到螢幕上。
選擇:用選擇結構可以選擇執行或跳過某項操作。
重複:用重複結構可以重複執行指令
第七章:
1.計算機問題求解過程:
-分析和說明階段
演算法開發階段
實現階段
維護階段
2.有簡單引數的演算法:帶有選擇的演算法、帶有循壞的演算法(技術控制迴圈、事件控制迴圈)
技術控制迴圈:可以指定過程重複的次數
事件控制迴圈:迴圈中重複的次數是由迴圈體自身內發生的事件控制的迴圈
資料有兩種形式:不可分割的和複合的。陣列是一種同構的結構,給出了一個有名稱的元素的集合和允許使用者訪問個別元素在結構中的位置
3.有序陣列中的順序搜尋
二分檢索: 二分檢索演算法假設要檢索的陣列是有序的,其中每次比較操作可以找到要找的專案或把陣列減少一半。二分檢索不是從陣列開頭開始順序前移,而是從陣列中間開始。如果要檢索的專案小於陣列的中間項,那麼可以知道這個專案一定不會出現在陣列的後半部分,因此只需要搜尋陣列的前半部分即可。
然後再檢測陣列的“中間”項(即整個陣列1/4處的專案)。如果要檢索的專案大於中間項,搜尋將在陣列的後半部分繼續。如果中間項等於正在搜尋的專案,搜尋將終止。每次比較操作都會將搜尋範圍縮小一半。當要找的專案找到了,或可能出現在這個專案的陣列為空的情況,整個過程將終止。
4.排序
選擇排序:工作原理是:第一次從待排序的資料元素中選出最小(或最大)的一個元素,存放在序列的起始位置,然後再從剩餘的未排序元素中尋找到最小(大)元素,然後放到已排序的序列的末尾。以此類推,直到全部待排序的資料元素的個數為零。選擇排序是不穩定的排序方法。
氣泡排序:它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從A到Z)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。
插入排序:每步將一個待排序的記錄,按其關鍵碼值的大小插入前面已經排序的檔案中適當位置上,直到全部插入完為止。
快速排序:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列。 5.遞迴演算法:是指可以在子程式自身中出現子程式名的演算法。階乘和二分檢索實際上就是遞迴演算法。