編譯原理 一 緒論

程序設計語言和編譯程序

  • 助記符 代替機器語言(二進制編碼)的另外一種語言,彙編語言。
  • 彙編語言編寫的程序必須翻譯成機器語言才能執行,這種翻譯是經過「彙編程序」實現的。
  • 編譯程序就是指這樣一種程序,經過它可以將用高級語言編寫的源程序轉換爲與之在邏輯上等價的低級語言形式的目標程序
  • 一個高級語言程序的執行分爲兩個階段:編程

    • 編譯階段。將源程序變換成目標程序。
    • 運行階段。接收輸入數據,運行後輸出運算結果。
  • 若是編譯生成的目標程序是彙編語言形式的,那麼在編譯與運行階段之間還有一個彙編階段。
  • 高級語言程序也有經過解釋程序來執行的。特色是:優化

    • 逐條讀出語句並解釋執行。(邊解釋邊執行)
    • 解釋程序的執行過程當中並不產生目標程序。
    • 典型的例子是 BASIC 語言。

編譯過程

分爲五個階段:編碼

  • 詞法分析:將源程序中的字符串變換爲單詞符號流的過程。
  • 語法分析:將單詞符號流分解爲各種語法單位(語法範疇)。
  • 語義分析和中間代碼生成:spa

    • 對各種語法範疇進行靜態語義檢查。如變量是否認義,類型是否正確。
    • 檢查正確的話進行中間代碼的翻譯
  • 優化翻譯

    • 任務是對中間代碼進行等價變換或改造,得到更爲高效的目標代碼。
    • 優化遵照程序的等價變換原則
  • 目標代碼生成設計

    • 把優化後的中間代碼變換爲機器語言程序或者彙編語言程序。

clipboard.png

注意點:ip

  • 一個編譯過程分多遍完成能夠使編譯程序的邏輯結構更清晰
  • 編譯過程的絕大部分時間都花在表格管理上
  • 爲了儘量多的發現錯誤,應該在發現錯誤後還能繼續編譯下去

開發一個編譯程序

常採用下列技術實現:開發

  • 自編譯字符串

    • 用某種高級語言編寫本身的編譯程序稱爲自編譯。
  • 交叉編譯it

    • 指用 a 機器上的編譯程序來產生可在 b 機器上運行的目標代碼。
  • 自展
  • 移植
相關文章
相關標籤/搜索