1. 程式人生 > 其它 >2021-2022第一學期20212423《網路空間安全專業導論》第三週學習總結

2021-2022第一學期20212423《網路空間安全專業導論》第三週學習總結

目錄
==========

一、計算機操作

計算機對資料執行的操作:儲存、檢索、處理
操作特點:可程式設計的(操作資料的指令本質上也是一種儲存的資料)

二、計算機語言

機器語言---編寫了計算機真正執行的程式指令(指令固定在計算機的硬體中)由計算機直接使用的二進位制編碼指令構成的語言。
計算機指令的表示---每個處理器都有專用的機器指令集合,這是處理器唯一能夠真正執行的指令。
指令清單:處理器設計者列出所有指令,並給每個指令分配一個二進位制程式碼用來表示它們。(CPU實際上自身就能夠識別專用命令的二進位制,因此真實清單並不存在,該“清單”已經被嵌入CPU自身設計)

1.Pep/9虛擬機器

定義:一種假象的機器,為了模模擬實機器的重要特徵
基本指令:40條(所有該虛擬機器程式皆由這40條指令所編寫)
a.基本特徵:儲存空間65536位元組 字長2位元組
暫存器(在CPU的ALU中的一小塊儲存區域)
暫存器分類(共七類,重點研究三個)
程式計數器(PC):包含下一條即將被執行的指令的地址
指令暫存器(IR):其中包含正在被執行的指令的一個副本
累加器(A):用來儲存資料和運算結果
回顧二進位制數及十六進位制數,注意可用的位數(是否需要有一位用於表示符號)這決定了可用記憶體的大小
b.指令格式
8位指令說明符+16位運算元說明符(可選的,不一定一定需要)
指令長度:1位元組或3位元組
指令說明符:說明了要執行的具體操作(一位元組,八位是四位操作程式碼+一位暫存器說明符+三位定址模式)
包含的定址模式說明符:解析指令中的運算元部分
000表示立即定址,說明符中儲存的即為運算元(運算元說明符的第一個位元組會被忽略,第二個位元組會被載入暫存器A中)
001表示直接定址,說明符中儲存的即為運算元所在的記憶體地址名稱(運算元說明符只有第一個位元組會被載入)
一元指令沒有運算元,僅為一位元組
運算元說明符:運算元本身或運算元的地址(可以沒有)(兩位元組)
c.一些示例指令
4位操作程式碼
0000停止執行(一元指令)
1100將字載入暫存器A中
1110儲存暫存器A中的字:把暫存器A中的內容儲存到運算元中指定的位置(一個字2位元組)(不支援立即定址)
1111儲存暫存器A的位元組(不支援立即定址)
0110將運算元加到暫存器A中--
1000從暫存器A減運算元

2. Pep/9的輸入、輸出

設計原則:記憶體對映輸入/輸出(將輸入輸出裝置與主存中特定的,固定的地址聯絡起來。

三、一個程式例項

1.Pep/9模擬器

為了執行Pep/9機器語言,輸入十六進位制的程式程式碼到目的碼的視窗中
裝入程式:在程式執行之前,把它載入儲存器
運營程式
特點:每次只執行一條程式命令
遵守讀取-執行週期

2.另一個機器語言例項:逆序輸出字元

第一個字元:輸出裝置—累加器—儲存器—
第二個字元:輸出裝置—累加器
第二個字元輸出
第一個字元:從儲存器回到累加器—列印輸出

四、組合語言

設計目的:幫助程式設計師,用助記指令碼代替二進位制或十六進位制數字,減少錯誤,提高效率。
組合語言:一種低階語言,用助記碼錶示特定計算機的機器語言指令
彙編器:把組合語言程式翻譯成機器程式碼的程式
特點:不具有普適性,每種型別的機器都有自己的機器語言,因此會有多種組合語言和翻譯程式

1.Pep/9組合語言

運算元用0x和十六進位制+,+定址模式(i表示立即定址,d表示直接定址)
幾個基本助記碼
a.常規指令
將值載入累加器(支援i和d兩種模式):LDWA(載入字);LDBA(載入位元組)
將累加器中的值儲存到記憶體單元(不支援i模式):STWA(儲存字);STBA(儲存位元組)
從累加器中進行加和減的操作(支援i和d模式,總運算在一個完整的字上)
b.彙編器指令(彙編器本身使用,被稱為偽操作)
翻譯程式使用的指令
c.關於指令的註釋
Pep/9彙編器忽略分號後面的任何字元,因此允許作者為指令添加註釋
註釋:為程式讀者提供的解釋性文字

2.數字資料、分支、標籤

分支:指出執行下一條指令的指令
DECI:十進位制輸入,從輸入裝置中讀取十進位制數,將它儲存在運算元指定的位置上(可以將輸入字元轉化為數字,不支援立即定址)
DECO/STRO:使資料寫入輸出裝置中
BR:無條件轉移
BRLT(要求滿足特定情況):要求累加器小於零
BREQ(要求滿足特定情況):要求累加器等於零
+一個例子:讀取兩個數字後相加
標籤:對記憶體位置起的名字,可以將這個名字作為運算元

3.組合語言中的迴圈

讀取迴圈次數數值--使用計數器進行迴圈加法處理計數--使用BREQ檢測是否需要終止

五、表達演算法

演算法:解決方案的計劃或概要,或解決問題的邏輯步驟順序
虛擬碼:一種表達演算法的語言

1.虛擬碼的功能

虛擬碼:並非計算機語言,而是人們用來說明操作的便攜語言
虛擬碼必須表示出:
(1)變數
(2)賦值(採用語句或使用反向箭頭)
(3)輸入(write)、輸出(read)
字串:雙引號之間的字元
(4)選擇(if)
(5)重複

2.執行虛擬碼演算法

+一個例子:數字的進位制轉化
走查轉換演算法

3.寫虛擬碼演算法

4.翻譯虛擬碼演算法

六、測試

測試計劃:一個說明了要全面測試程式需要執行的次數以及執行程式使用的資料(要列出選擇原因和預期輸出)
幾個測試方法:程式碼覆蓋測試法(明箱測試法):測試者能夠直接看到程式碼
資料覆蓋測試法(暗箱測試法):基於輸出的資料
測試計劃實現:執行所有測試用例,記錄執行結果,糾正其中錯誤

第七章 問題求解與演算法設計

一.如何解決問題

1.提出問題
2.尋找熟悉的情況
3.分治法---把大的問題分解成能夠單獨解決的小問題
4.演算法---在有限的時間裡用有限的資料解決問題或子問題的明確指令
5.計算機問題求解過程:
分析和說明階段---演算法開發階段(開發演算法、測試演算法)---實現階段(編碼、測試)---維護階段(使用、維護)

二.測試演算法---需要在開發過程的早期階段進行

三.有簡單變數的演算法

1.帶有選擇的演算法 ELSE IF

2.帶有迴圈的演算法

(1)計數控制迴圈---指定過程重複的次數
(2)事件控制迴圈---由迴圈體自身內發生的事件控制的

3.巢狀結構---控制結構嵌入另一個控制結構的結構,又叫巢狀邏輯。

4.抽象步驟---細節仍未明確的演算法步驟

具體步驟---細節完全明確的演算法步驟

5.陣列---同構專案的有名集合(搜尋、排序、處理)

記錄---異構專案的有名集合
集合---包含整數、實數、字串等

四.搜尋演算法

1.有序陣列中的順序搜尋

2.二分檢索---在有序列表中查詢專案的操作,通過比較操作排除大部分檢索範圍

五.排序

1.選擇排序
2.氣泡排序
3.插入排序

六.遞迴演算法---演算法呼叫它本身的能力

七.幾個重要思想

1.資訊遮蔽---隱蔽模組的細節以控制對這些細節的訪問的做法

2.抽象---複雜系統的一種模型,只包括對觀察者來說必需的細節

(1)資料抽象---把資料的邏輯檢視和它的實現分離開
(2)過程抽象---把動作邏輯檢視和它的實現分離開
(3)控制抽象---把控制結構的邏輯檢視和它的實現分離開
控制結構---用來改變正常的順序控制流的語句

3.識別符號---資料和過程的一個名字