例如,js java要经过什么过程才会变成机器码。
我想不明白 为什么有那么多语言,是什么导致不同语言做不同事情的
我可以大概讲讲V8,V8主要是这么几个过程,构建词法环境,生成抽象语法树,将生成的抽象语法树直接转换为机器码。这里需要说一下,V8是动态生成机器码的,并非经过汇编再有汇生成机器码。V8实际上自带一个用C++实现的“汇编器库”用来动态生成机器码。它提供一组C++ API,调用这个API的函数就可以在内存里生成机器码来。
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
8 回答6.5k 阅读
2 回答4.3k 阅读✓ 已解决
2 回答852 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
仅回答问题第一个问题,第二个问题因为涉及语言不多,不做分析。
高级语言分动态语言和静态语言。
动态语言就是解释型语言,拿到code,调用解释器执行即可。比如js。
静态语言就是编译型语言,要先把code经过预处理、编译、链接生成可执行文件。然后运行即可。比如c/c++等。
Java代码要先用javac编译成class文件,然后调用java执行即可。对于热点代码会使用jit把class再编译为二进制。所以Java即算解释型也算编译型吧。
