作者peanut97 (丁丁)
看板Soft_Job
標題Re: [請益] 想不通直譯器vs編譯器vs機器碼的問題
時間Tue May 8 21:43:55 2018
※ 引述《dragoncfe168 (梅長蘇)》之銘言:
: 請問一下
: 為何直譯器將source code轉譯成機器碼,
: 不會產生不同電腦的機器語言不同 而無法執行的問題???
: 反觀同樣把source code轉譯成機器碼的編譯器
: 卻會有此類問題呢???
我猜你想說的是
c++ 的程式要分別用 windows 的編譯器轉成機器碼才能在 windows 執行,或是用 Linux 的編譯器轉成機器碼才能在 Linux 上執行。
但是像 Python, PHP 或 Javascript 這種用直譯器的語言,為什麼就可以只用一個 PHP 就能達到跨平台?
其實也是有分啦。你在 Windows 裝的 PHP 直譯器程式,跟在 Linux 上裝的 PHP 直譯器程式就是不一樣的了。跟機器相依的部分,就是那個專屬平台的直譯器幫你解決掉了。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.7.13
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1525787038.A.7DC.html
1F:推 dragoncfe168: 我的疑問是針對java的jvm透過直譯器轉成的機器碼.. 05/08 22:13
2F:→ dragoncfe168: 卻可以跨平台 感到不解 05/08 22:14
3F:→ dragoncfe168: jvm的編譯器把source code轉成byte code來跨平台 05/08 22:15
4F:→ dragoncfe168: 這我可以理解 但是當jvm再把byte code直譯成機器碼 05/08 22:16
5F:→ dragoncfe168: 來讓任何實體主機電腦可以run 達成跨平台 感到不解 05/08 22:18
6F:→ dragoncfe168: 所以 我歸納出一個假設結論:直譯器是可以跨平台 05/08 22:20
7F:→ dragoncfe168: 而編譯器是無法跨平台的... 05/08 22:20
8F:→ dragoncfe168: 不知我的結論是否正確呢?? 05/08 22:21
9F:推 taffy128s: 不同平台有不同的jvm 我記得是這樣 05/08 22:24
10F:推 eddie55020: bytecode跨平台,但轉出來的機械碼不是啊,所以要針 05/08 22:27
11F:→ eddie55020: 對不同的機器寫不同的jvm 05/08 22:27
12F:推 ripple0129: 直譯器本身你覺得有跨平台嗎。沒有的話是不是直譯器是 05/08 22:28
13F:→ ripple0129: 各系統各自編自己的直譯器。 05/08 22:28
14F:→ er230059: 不同平台的JVM是不同的JVM阿 05/08 22:37
16F:→ weiyucsie: 看到"jvm的編譯器"之類的文字感覺怪怪的XD 05/09 10:40
17F:→ weiyucsie: 因為感覺是在說javac之類的,但是那不在 jvm 05/09 10:41