※ 引述《dragoncfe168 (梅長蘇)》之銘言:
: 請問一下
: 為何直譯器將source code轉譯成機器碼,
: 不會產生不同電腦的機器語言不同 而無法執行的問題???
直譯器並不是轉成機械碼, 而是直接執行運算。
例如:
1+2
直譯器在發現是執行 加法時, 就會用寫該直譯器的語言完成 1+2 的結果。
如果是用 c 寫的, 就會執行 add_fun(1,2), 然後得到 3。
: 反觀同樣把source code轉譯成機器碼的編譯器
: 卻會有此類問題呢???
而編譯器並不是直接轉成機械碼, 而是組合語言,
add 1,2
但是一直到最後的執行檔, 都不是編譯器做的。
組譯器把 add 1,2 變成 機械碼, 還有某種格式的執行檔,
這就是不能執行的原因之一, 是的有之一, 還有其他條件會造成
這個執行檔無法在其他平台執行的原因, 不過不同的
執行檔格式算是比較容易解釋的一個原因。