作者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/cn.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