編譯器Compiler

編譯器,是將便於人編寫,閱讀,維護的高階電腦語言翻譯為電腦能解讀、執行的低階機器語言的程式。編譯器將原始程式(Source program)作為輸入,翻譯產生使用目的語言(Target language)的等價程式。原始碼一般為高階語言 (High-level language), PascalC++Java 等,而目的語言則是組合語言或目的機器的目的碼(Object code),有時也稱作機械碼(Machine code)。

 

一個現代編譯器的主要工作流程如下:

原始碼 (source code)

預處理器 (preprocessor)

編譯器 (compiler)

組譯器 (assembler)

目的碼 (object code)

聯結器 (Linker)

可執行程式 (executables)

 

編譯式語言(:CFortran..)

用編譯器將程式碼轉換成目標平台專用的執行檔

l   優點

n   執行速度快,可與硬體結合。

n   可寫較大的程式。

l   缺點

n   執行檔可攜性不高。

直譯式語言(BasicdBase..)

用解譯器對原始程式碼一邊讀程式碼一邊執行。

l   優點

n   程式可攜性高。

l   缺點

n   執行速度慢。

n   原始碼必須公開。

 

Virtual Machine(Java)

是一個虛構出來的電腦,通過在實際的電腦上模擬模擬各種電腦功能來實現的。Java虛擬機有自己完善的硬體架構,如處理器、堆疊、暫存器等,還具有相應的指令系統。JVM屏蔽了與具體作業系統平臺相關的信息,使得Java程序只需生成在Java虛擬機上運行的目標代碼(位元組碼),就可以在多種平臺上不加修改地運行。

l   優點

n   可以用重新編譯即可在各個不同平台執行

l   缺點

n   執行效率不比編譯是語言來的佳,可是比直譯式語言來的快。

n   須要先安裝Virtual Machine才可執行

創作者介紹

Amin's Note

Aminzai 發表在 痞客邦 PIXNET 留言(2) 人氣()


留言列表 (2)

發表留言
  • mitnick
  • 你的觀念有誤.
    第一個, 所謂的 compiler 跟 interpreter 的定義並不都是針對原始碼. 正確的說法是. compiler 並不需要 run time parsing. 而 interpreter 要.
    另外一點, JVM 的本身就是 interpreter. 只是他所直譯的 input 是 java byte code. java 的架構是上述兩種機制都有用到. .java -- javac --> .class (compiler), .class --> jvm (interpreter). 而不是一個前所未見的技術.
  • 訪客
  • compiler generates native code and them depends on machine , but interpreter execute those codes in run time. native codes is 010101... , they are machine code. its speed is faster.
找更多相關文章與討論