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

作者: peanut97 (丁丁)   2018-05-08 21:43:55
※ 引述《dragoncfe168 (梅長蘇)》之銘言:
: 請問一下
: 為何直譯器將source code轉譯成機器碼,
: 不會產生不同電腦的機器語言不同 而無法執行的問題???
: 反觀同樣把source code轉譯成機器碼的編譯器
: 卻會有此類問題呢???
我猜你想說的是
c++ 的程式要分別用 windows 的編譯器轉成機器碼才能在 windows 執行,或是用 Linux 的編譯器轉成機器碼才能在 Linux 上執行。
但是像 Python, PHP 或 Javascript 這種用直譯器的語言,為什麼就可以只用一個 PHP 就能達到跨平台?
其實也是有分啦。你在 Windows 裝的 PHP 直譯器程式,跟在 Linux 上裝的 PHP 直譯器程式就是不一樣的了。跟機器相依的部分,就是那個專屬平台的直譯器幫你解決掉了。
作者: dragoncfe168 (梅長蘇)   2018-05-08 22:13:00
我的疑問是針對java的jvm透過直譯器轉成的機器碼..卻可以跨平台 感到不解jvm的編譯器把source code轉成byte code來跨平台這我可以理解 但是當jvm再把byte code直譯成機器碼來讓任何實體主機電腦可以run 達成跨平台 感到不解所以 我歸納出一個假設結論:直譯器是可以跨平台而編譯器是無法跨平台的...不知我的結論是否正確呢??
作者: taffy128s (imcorn)   2018-05-08 22:24:00
不同平台有不同的jvm 我記得是這樣
作者: eddie55020 (eddie)   2018-05-08 22:27:00
bytecode跨平台,但轉出來的機械碼不是啊,所以要針對不同的機器寫不同的jvm
作者: ripple0129 (perry tsai)   2018-05-08 22:28:00
直譯器本身你覺得有跨平台嗎。沒有的話是不是直譯器是各系統各自編自己的直譯器。
作者: er230059 (CQH)   2018-05-08 22:37:00
不同平台的JVM是不同的JVM阿
作者: weiyucsie (選擇那刻 才算開始)   2018-05-09 10:39:00
http://0rz.tw/YOhgp 右圖看到"jvm的編譯器"之類的文字感覺怪怪的XD因為感覺是在說javac之類的,但是那不在 jvm

Links booklink

Contact Us: admin [ a t ] ucptt.com