博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lua4.0 正式开始
阅读量:6431 次
发布时间:2019-06-23

本文共 734 字,大约阅读时间需要 2 分钟。

  hot3.png

自己挖的坑,含泪也要填上。

自已做的计划,无论多么艰难,都要付诸实施的。

上一次写博客中断到现在又过去了几个月。

但是,不管怎么样,总算是开始了。

这个版本的编译器和解释器是分开的。

读代码的时候先编译器再解释器,解释器中包含了编译这一步。

先看一下编译大概是个什么过程。

编译把源代码转化为字节码(以及程序中的数据信息),字节码可由虚拟机执行。

字节码可以保存为文件,保存的二进制文件可以直接交给解释器执行。

这样可以省去运行前的编译步骤,以提速,或者做代码保护。

比如,在发布的时候,可以把脚本编译为二进制格式,只发布这个二进制格式的文件。

用户可以自制定二进制格式的文件,以防止反编译。

不过同时要制定二进制格式的读取,以适配自己的自定制格式。

这个步骤就是代码混淆。

编译时,把源代码从文件里读取出来,词法分析,语法分析进而转化为相应的字节码。这个一般学校的编译原理课上都有介绍,不再细说。感兴趣的同学可以自行在网上查找资源,有很多编译器高手在网上相关博文。Lua 的语法分析是个递归下降语法分析器,因为其语法设计的正交性,这也是很多人喜欢 Lua 的一个原因。

代码阅读的顺序是按程序执行的顺序,程序运行到哪儿,代码就看到哪儿。如果有必要,就先分析程序执行所需要的预备代码。遇到不是必需的,就提个问题,挖个坑在放着,到后面再慢慢的填坑。

说了这么多,先挖第一个坑,代码呢?

----------------------------------------

到目前为止的问题:

> 代码呢?

----------------------------------------

转载于:https://my.oschina.net/xhan/blog/489745

你可能感兴趣的文章
Spring-IOC
查看>>
Python学习笔记6-异常捕获取
查看>>
设置Sql Agent运行Job时的执行账户
查看>>
Unity3D - 详解Quaternion类(一)
查看>>
lintcode :搜索旋转排序数组
查看>>
InnoDB Record, Gap, and Next-Key Locks
查看>>
云端中间层负载均衡工具 Eureka
查看>>
如何启动ResourceManager和NodeManager
查看>>
如何使用angularjs实现抓取页面内容
查看>>
玩转SSH(五):Struts + Spring + MyBatis(注解版)
查看>>
Android Studio系列-签名打包
查看>>
[MongoDB] Remove, update, create document
查看>>
iOS网络编程-ASIHTTPRequest框架同步请求-备用
查看>>
cobbler 修改 distro_signatures.json
查看>>
conv2、filter2、imfilter的区别
查看>>
android:background="@drawable/home_tab_bg"
查看>>
MySQL中间件
查看>>
【转】VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)
查看>>
HTTP协议具体解释
查看>>
MySQL Doublewrite Buffer及业务评估
查看>>