一般的编译型语言,经过编译后生成的都是与当前硬件环境相匹配的汇编代码;而脚本语言经过编译器处理生成字节码,而后在对应的虚拟机中执行。
- 每个脚本语言都有自己的一套字节码,与硬件平台无关(差异都由虚拟机解决),实现了跨平台
- 字节码不能像汇编代码那样直接有极其执行,所以运行速度相对较慢
虚拟机需要完成的工作:
- 将源代码编译成虚拟机可以识别执行的字节码
- 为函数调用准备调用栈
- 内部维持一个指令指针来保存下一个将执行的指令地址
- 模拟一个CPU的运行:循环拿出由IP指向的字节码,根据字节码格式进行解码,然后执行字节码
出处:《lua设计与实现》