Re: [請益] 想不通直譯器vs編譯器vs機器碼的問題

看板Soft_Job (軟體人)作者 (丁丁)時間7年前 (2018/05/08 21:43), 編輯推噓4(4013)
留言17則, 6人參與, 7年前最新討論串2/9 (看更多)
※ 引述《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://www.ptt.cc/bbs/Soft_Job/M.1525787038.A.7DC.html

05/08 22:13, 7年前 , 1F
我的疑問是針對java的jvm透過直譯器轉成的機器碼..
05/08 22:13, 1F

05/08 22:14, 7年前 , 2F
卻可以跨平台 感到不解
05/08 22:14, 2F

05/08 22:15, 7年前 , 3F
jvm的編譯器把source code轉成byte code來跨平台
05/08 22:15, 3F

05/08 22:16, 7年前 , 4F
這我可以理解 但是當jvm再把byte code直譯成機器碼
05/08 22:16, 4F

05/08 22:18, 7年前 , 5F
來讓任何實體主機電腦可以run 達成跨平台 感到不解
05/08 22:18, 5F

05/08 22:20, 7年前 , 6F
所以 我歸納出一個假設結論:直譯器是可以跨平台
05/08 22:20, 6F

05/08 22:20, 7年前 , 7F
而編譯器是無法跨平台的...
05/08 22:20, 7F

05/08 22:21, 7年前 , 8F
不知我的結論是否正確呢??
05/08 22:21, 8F

05/08 22:24, 7年前 , 9F
不同平台有不同的jvm 我記得是這樣
05/08 22:24, 9F

05/08 22:27, 7年前 , 10F
bytecode跨平台,但轉出來的機械碼不是啊,所以要針
05/08 22:27, 10F

05/08 22:27, 7年前 , 11F
對不同的機器寫不同的jvm
05/08 22:27, 11F

05/08 22:28, 7年前 , 12F
直譯器本身你覺得有跨平台嗎。沒有的話是不是直譯器是
05/08 22:28, 12F

05/08 22:28, 7年前 , 13F
各系統各自編自己的直譯器。
05/08 22:28, 13F

05/08 22:37, 7年前 , 14F
不同平台的JVM是不同的JVM阿
05/08 22:37, 14F

05/09 10:39, 7年前 , 15F
05/09 10:39, 15F

05/09 10:40, 7年前 , 16F
看到"jvm的編譯器"之類的文字感覺怪怪的XD
05/09 10:40, 16F

05/09 10:41, 7年前 , 17F
因為感覺是在說javac之類的,但是那不在 jvm
05/09 10:41, 17F
文章代碼(AID): #1QyQcUVS (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1QyQcUVS (Soft_Job)