Tiny語言編譯器簡單介紹


1.簡單介紹:編譯器是將一種語言翻譯成還有一種語言的程序。編譯器將源程序的代碼作為輸出,從而產生用目標語言編寫的等價程序。比如源碼為C/C++等高級語言,那么目標語言就是目標機器的機器代碼。也就是能夠直接執行的機器代碼(各種二進制)。

以下就是一個編譯過程的簡單樣例:

x=2 (高級語言)
MOV x,2  (匯編語言)
C7 06 0000 0002  (機器代碼)

    

 2.相關程序

     a.解釋程序(interpreter):它會馬上運行程序而不是編譯完畢后在運行,典型的解釋程序有Java,Lisp等

     b.匯編程序(assembler):它將匯編語言翻譯成機器代碼

     c.連接程序(linker):編譯器和匯編程序常常以來其它的頭文件或者資源,連接程序將他們收集到一個可運行文件里

     d.裝載程序(loader):處理全部的與基地址和起始地址相關的可重定位地址

     e.編輯器(editor):編寫源碼

     f.調試程序(debugger):調試程序用的

     g.描寫敘述器(profiler):描寫敘述程序的執行時間等信息

     h.項目管理器(project manager):用於項目管理的程序

   

3.編譯的一般步驟

    以字符流的形式掃描程序,進行詞法分析。然后進行語法分析,語義分析,源碼優化,代碼生成。目標代碼優化等一般性步驟(之后會重點分析)


4.主要數據結構

記號(token)。語法樹,符號表,常數表,中間代碼,暫時文件

   

5.TINY語言簡單介紹

  a.語句序列用分號隔開

  b.全部變量都是整形變量,且不須要聲明

  c.僅僅有兩個控制語句。if和repeat

  d.if推斷語句必須以end結束,且有可選的else語句

  e.read和write完畢輸入輸出

  f.花括號表示凝視,但不同意嵌套凝視

  g.有<和=兩個比較運算符

  h.有+、-、*、/簡單運算符

以下來看一個簡單樣例:

{ Sample program in TINY language - compute factorial } 

read x;{input an integer} 
if 0<x then {don't compute if x<=0} 
  fact := 1; 
  repeat 
    fact := fact*x。
    x := x-1 
  until x = 0;
   write fact{output factorial of x}
end

以后會對TINY語言編譯器進行具體介紹的



   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM