高级语言到机器可执行的机器码,要经过什么过程?

例如,js java要经过什么过程才会变成机器码。
我想不明白 为什么有那么多语言,是什么导致不同语言做不同事情的

回答:

仅回答问题第一个问题,第二个问题因为涉及语言不多,不做分析。

高级语言分动态语言和静态语言。
动态语言就是解释型语言,拿到code,调用解释器执行即可。比如js。
静态语言就是编译型语言,要先把code经过预处理、编译、链接生成可执行文件。然后运行即可。比如c/c++等。

Java代码要先用javac编译成class文件,然后调用java执行即可。对于热点代码会使用jit把class再编译为二进制。所以Java即算解释型也算编译型吧。
图片描述

回答:

我可以大概讲讲V8,V8主要是这么几个过程,构建词法环境,生成抽象语法树,将生成的抽象语法树直接转换为机器码。这里需要说一下,V8是动态生成机器码的,并非经过汇编再有汇生成机器码。V8实际上自带一个用C++实现的“汇编器库”用来动态生成机器码。它提供一组C++ API,调用这个API的函数就可以在内存里生成机器码来。

以上是 高级语言到机器可执行的机器码,要经过什么过程? 的全部内容, 来源链接: utcz.com/p/190799.html

回到顶部