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