編譯原理
高級語言源程序中的錯誤分為兩類:語法錯誤和語義錯誤,其中語義錯誤可分為靜態語義和動態語義錯誤
語法錯誤:語言結構上的錯誤
靜態語義錯誤:編譯時能發現的程序含義上的錯誤
動態語義錯誤:只有程序運行時才能表現出來
程序編譯過程
過程:詞法分析、語法分析、語義分析
- 詞法分析:從左到右逐字符讀入源程序
- 語法分析:基於詞法分析,如“程序”、“語句”、“表達式”等語法單位
- 語義分析:為代碼生成階段收集類型信息,常見錯誤有死循環和除數為0
**詞法錯誤、語法錯誤、靜態語義錯誤都可在編譯程序時檢查出
**編譯過程,詞法分析、語法分析、語義分析、目標代碼生成是必須的,代碼優化和中間代碼生成不是必須
存儲器分類
訪問方式可分為
- 按地址訪問的存儲器
- 按內容訪問的存儲器:相聯存儲器,把數據或數據一部分作為關鍵字
尋址方式可分為
- 隨機存儲器(RAM):可對任何存儲單元存入或讀取數據,訪問任何一個存儲單元所需時間是相同的
- 順序存儲器(SAM):訪問數據所需時間與數據所在存儲位置相關,磁帶是典型的順序存儲器
- 直接存儲器(DAM):介於RAM和SAM之間,磁盤是一種直接存儲器,它對磁道的尋址是隨機的,而在一個磁道內,則是順序尋址
虛擬存儲器
包含主存、輔存
基本思路:先進入輔存,再進入主存
尋址方式
- 立即尋址:直接指出操作數本身
- 直接尋址:直接指出操作數地址
- 間接尋址:給出存放操作數地址的主存單元的地址
- 寄存器尋址:指定的寄存器中存放着操作數
- 隱含尋址:在指令中隱含着操作數的地址
總線系統
- 三總線結構:地址總線、數據總線、控制總線
- 數據總線:傳輸數據信息,CPU傳輸數據的總線帶寬
- 控制總線:傳送控制信號和時序信號,如讀/寫
- 地址總線:傳送地址,尋址空間
CPU
CPU其他部件
- 指令寄存器IR:保存當前正在執行的一條指令,位數取決於指令字長
- 數據寄存器MDR:保存操作數和運算結果信息
- 地址寄存器AR:保存當前CPU所訪問的內存單元的地址
- 累加寄存器AC:專門存放算術或邏輯運算的操作數和運算結果的寄存器
- 算術邏輯單元ALU:CPU執行單元,主要負責運算工作,包含加法器
- 程序計數器PC:保存待執行指令的地址,程序猿應該要能控制其所編寫程序的執行過程,這需要利用程序計數器來實現,因為程序猿能訪問的是程序計數器
運算器組成
算術邏輯單元ALU、累加寄存器、數據緩沖寄存器和狀態條件寄存器
控制器組成
程序計數器PC、指令寄存器IR、地址寄存器AR、指令譯碼器ID、時序部件
作用:保證指令的正確執行,處理異常事件
指令集計算機
- CISC:復雜指令集計算機
- RISC:精簡指令集計算機
RISC優勢:
1、包含頻率高但不負責指令
2、更多寄存器
3、指令長度固定
4、不用微程序控制技術
5、采用流水技術
6、只有存取指令訪問主存
周期
指令周期:取出並執行一條指令的時間
總線周期:也就是一個訪存儲器或I/O端口操作所用的時間
時鍾周期:又稱震盪周期,是處理操作的最基本單位
機器周期:完成一個基本操作的時間單元,如取指周期、取數周期
**一個指令周期由若干個總線周期組成,而一個總線周期時間又包含若干個時鍾周期
**一個總線周期包含一個(只有取址周期)或多個機器周期(CPU響應DMA請求是在總線周期)
防火牆
功能
1、包過濾
2、審計和報警過程,記錄訪問過程
3、代理
4、流量控制
防護牆不能過濾的是
存在安全威脅的URL地址(屬於應用層數據)
防火牆能過濾的是
源和目的IP、IP協議號、源和目的端口
防火牆功能不包含
不提供漏洞掃描功能
不同的管理程序
- 字處理程序:用於文字
- 設備驅動程序:使計算機和設備通信的程序,控制硬件設備
- 語言翻譯程序:編譯程序、解釋程序
- 文件目錄和目錄項:組織和管理外存信息
DMA
數據在內存與I/O設備間的成塊傳送,不需要CPU的任何干涉,只需要DMA硬件完成
中斷向量
中斷服務程序的入口地址。
編譯和解釋區別
是否生成目標程序文件,解釋
cache系統
由硬件實現並完成