天天看點

期中總結(修改)

期中總結

一、常用指令

  • 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,感覺還是不錯的,就是操作還是有點生疏。