Re: [請益] 想不通直譯器vs編譯器vs機器碼的問題
※ 引述《dragoncfe168 (梅長蘇)》之銘言:
: 請問一下
: 為何直譯器將source code轉譯成機器碼,
: 不會產生不同電腦的機器語言不同 而無法執行的問題???
: 反觀同樣把source code轉譯成機器碼的編譯器
: 卻會有此類問題呢???
呃,我覺得你沒有搞清楚一件事,原始碼、中間碼、機器碼的差異。
首先,編譯器的目的,不是轉成機器碼用的。
編譯器的目的,是把語言 A 的原始碼,轉成語言 B 的原始碼用的。
例如 LLVM 或者是 GCC,它們把 C/C++ 轉過後,不是直接變成執行檔,
而是先變成一個特殊語言的中間碼 (IR),再由後端(backend)機制,轉成執行檔。
而執行檔,也可以說是一種機器碼。
若是語言 B 就是組語,當然你也可以當作是一種轉機器碼。
而直譯器的目的,是用來直接執行的。
換句話說,原始檔並沒有經過轉換!沒有 xxxx.a -> xxxx.b -> xxxx.exe
這種過程,而是 xxxx.a 直接餵進直譯器,由直譯器幫你執行。
以 Java 為例,XXXX.java -> XXXX.class 這過程,的確可以說是編譯。
而從概念性的角度來看,JVM 執行 XXXX.class 這過程,可以說是直譯。
這若牽涉到內部 JIT 的運作,則 JVM 亦有編譯機制在裡頭,但這更深了,
不在討論範圍。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.242.99.124
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1525840949.A.042.html
※ 編輯: fayhong (27.242.99.124), 05/09/2018 12:43:06
→
05/09 12:48,
7年前
, 1F
05/09 12:48, 1F
→
05/09 13:35,
7年前
, 2F
05/09 13:35, 2F
→
05/09 13:35,
7年前
, 3F
05/09 13:35, 3F
→
05/09 13:53,
7年前
, 4F
05/09 13:53, 4F
→
05/09 13:59,
7年前
, 5F
05/09 13:59, 5F
→
05/09 14:32,
7年前
, 6F
05/09 14:32, 6F
→
05/09 14:33,
7年前
, 7F
05/09 14:33, 7F
→
05/09 14:34,
7年前
, 8F
05/09 14:34, 8F
→
05/09 15:28,
7年前
, 9F
05/09 15:28, 9F
※ 編輯: fayhong (42.72.218.191), 05/09/2018 17:39:22
→
05/09 17:43,
7年前
, 10F
05/09 17:43, 10F
→
05/09 18:00,
7年前
, 11F
05/09 18:00, 11F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 7 之 9 篇):
Soft_Job 近期熱門文章
PTT職涯區 即時熱門文章