期中總結
一、常用指令
- man -k;grep;cheat;find;locate;apt-get.
二、正規表達式
- 查找比對、檢索、替換
- 常用符号
+ 表示前面的字元必須出現至少一次(1次或多次) ? 表示前面的字元最多出現一次(0次或1次) * 星号代表前面的字元可以不出現,也可以出現一次或者多次(0次、或1次、或多次)
- 字元描述
\ 将下一個字元标記為一個特殊字元、或一個原義字元。例如,“n”比對字元“n”。“\n”比對一個換行符。序列“\\”比對“\”而“\(”則比對“(”。 ^ 比對輸入字元串的開始位置。 $ 比對輸入字元串的結束位置。 {n} n是一個非負整數。比對确定的n次。例如,“o{2}”不能比對“Bob”中的“o”,但是能比對“food”中的兩個o。 {n,} n是一個非負整數。至少比對n次。例如,“o{2,}”不能比對“Bob”中的“o”,但能比對“foooood”中的所有o。“o{1,}”等價于“o+”。“o{0,}”則等價于“o*”。 {n,m} m和n均為非負整數,其中n<=m。最少比對n次且最多比對m次。例如,“o{1,3}”将比對“fooooood”中的前三個o。“o{0,1}”等價于“o?”。請注意在逗号和兩個數之間不能有空格。 * 比對前面的子表達式零次或多次。例如,zo*能比對“z”、“zo”以及“zoo”。*等價于{0,}。 + 比對前面的子表達式一次或多次。例如,“zo+”能比對“zo”以及“zoo”,但不能比對“z”。+等價于{1,}。 ? 比對前面的子表達式零次或一次。例如,“do(es)?”可以比對“do”或“does”中的“do”。?等價于{0,1}。當該字元緊跟在任何一個其他限制符(*,+,?,{n},{n,},{n,m})後面時,比對模式是非貪婪的。非貪婪模式盡可能少的比對所搜尋的字元串,而預設的貪婪模式則盡可能多的比對所搜尋的字元串。例如,對于字元串“oooo”,“o+?”将比對單個“o”,而“o+”将比對所有“o”。 . 比對除“\n”之外的任何單個字元。要比對包括“\n”在内的任何字元,請使用像“(.|\n)”的模式。 (pattern) 比對pattern并擷取這一比對的子字元串。該子字元串用于向後引用。要比對圓括号字元,請使用“\(”或“\)”。 x|y 比對x或y。例如,“z|food”能比對“z”或“food”。“(z|f)ood”則比對“zood”或“food”。 [xyz] 字元集合(character class)。比對所包含的任意一個字元。例如,“[abc]”可以比對“plain”中的“a”。其中特殊字元僅有反斜線\保持特殊含義,用于轉義字元。其它特殊字元如星号、加号、各種括号等均作為普通字元。脫字元^如果出現在首位則表示負值字元集合;如果出現在字元串中間就僅作為普通字元。連字元 - 如果出現在字元串中間表示字元範圍描述;如果如果出現在首位則僅作為普通字元。 [^xyz] 排除型(negate)字元集合。比對未列出的任意字元。例如,“[^abc]”可以比對“plain”中的“plin”。 [a-z] 字元範圍。比對指定範圍内的任意字元。例如,“[a-z]”可以比對“a”到“z”範圍内的任意小寫字母字元。 [^a-z] 排除型的字元範圍。比對任何不在指定範圍内的任意字元。例如,“[^a-z]”可以比對任何不在“a”到“z”範圍内的任意字元。
三、工具
- vim編輯器:
普通切換到插入: i 插入切換到普通: Esc 普通切換到指令行: : 指令行切換到普通:Esc
- gcc
預處理:gcc –E hello.c –o hello.i 編 譯:gcc –S hello.i –o hello.s 彙 編:gcc –c hello.s –o hello.o 鍊 接:gcc hello.o –o hello
- gdb
gdb programm(啟動GDB) b 設斷點(要會設4種斷點:行斷點、函數斷點、條件斷點、臨時斷點) run 開始運作程式 bt 列印函數調用堆棧 p 檢視變量值 c 從目前斷點繼續運作到下一個斷點 n 單步運作 s 單步運作 quit 退出gdb
- 使用disassemable配合b設定斷點可以檢視該程式的彙編代碼
四、課本主要内容
第二章 資訊的表示和處理
- 浮點數運算不會溢出,但是計算的結果是一個大緻的範圍,并不十分精确,不同的計算過程會有不同的計算值。
- 二進制小數:權值2^(-w)(w為小數點右邊第幾位)
-
IEEE浮點表示:符号、尾數、階碼
規格化的值、非規格化的值、特殊值
- 浮點運算:加法:不具有結合律,滿足單調性
- c語言的浮點數:float、double
第三章 程式的機器級表示
- 彙編指令:
mov —— 傳送資料 add —— 加 sub —— 減 imul —— 乘(有符号) xor —— 異或 or —— 或 and —— 與 leal —— 傳送位址 inc —— 加一 dec —— 減一 neg —— 取補 not —— 取負 sal (shl)—— 左移 sar —— 算術右移 shr —— 邏輯右移 loop —— 循環
第四章 處理器體系結構
- Y86的順序實作:取指、譯碼、執行、訪存、寫回、更新PC
第六章 存儲器結構層次
- RAM/ROM/磁盤
- RAM有SRAM和DRAM,特點和應用
- ROM有PROM,EPROM,E2PROM,FLASH
- 磁盤結構:盤片、磁道、扇區、間隙、柱面;磁盤驅動器
- 磁盤容量
- 通路時間:尋道、旋轉、傳送
- 邏輯磁盤塊:記憶體可以看成位元組數組、磁盤可以看成塊數組
-
總線:資料總線、控制總線、位址總線
系統總線、存儲總線、I/O總線
- 局部性原理:時間局部性、空間局部性
- 資料引用局部性
- 取指令局部性
- 存儲層次結構:系統觀(1+1>2)
- 中心思想:每層儲存設備都是下一層的“緩存”
- 高速緩存結構(S,E,B,m):高速緩存組、高速緩存行、塊
- 映射
- 命中
- 緩存管理
參考資料:
- 實驗:正規表達式基礎
- 2至7周blog
- 《深入了解計算機系統》實驗
期中總結體會:
在這次期中總結中,糾正了許多平時看書不認真導緻的錯誤了解。知識點要平時一點一滴地消化,不然積累起來就會有很大的知識漏洞。比如:對于浮點數表示方式和計算方法,當初似是而非地學習,覺得自己搞懂了,結果期中總結時發現還是有很多不懂的東西。諸如此類的例子還有挺多的。
平時通過課後練習題加深了解課程内容也是一個不錯的方式,但重點還是要将課本看一遍,不看書光看題很容易犯低級錯誤,問一些不明是以的問題。不僅是課後習題,今後對于家庭作業我也要重視起來。前面由于時間問題沒能完成家庭作業,今後要多做一點來提高自己對課本的了解程度。
可能排版還是有問題吧,今後嘗試使用markdown來寫一下blog。
現在嘗試了一下markdown,感覺還是不錯的,就是操作還是有點生疏。