首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

告别2017,llama vm 1.5版本发布

各位新年好,在介绍版本更新内容之前,先展示一段冒泡排序代码。

输出如下

上面这段代码根据成绩进行冒泡排序,结合了变量赋值、函数调用返回、table读写、if-while控制语句、内置函数、gc垃圾回收等功能,可以说一个虚拟机雏形接近完成。

版本更新内容

V1.5版本

实现table数据结构,包括构造table、读写成员、计算数组长度、自动扩容

实现内置函数tostring、print、floor、assert、getn

添加测试文件,实现启动自检

V1.4.1版本

重组代码结构,添加gc算法的测试用例

实现单行注释、运行异常捕获、局部变量作用域

编写makefile,支持linux编译

开发感想

在自己动手撸虚拟机之前,一直觉得编译器深不可测,现在觉得和平日写业务比,难度也不是特别大

虚拟机分编译部分和执行部分,编译部分偏重对于语法的抽象和拆解,其中指令生成部分较为费解,基于寄存器的指令难度远大于基于堆栈的指令

执行部分比较无脑,一行行顺序执行指令即可,关键点在于提升执行效率,这部分要求性能极为苛刻,二分查找都显得不够快,最好能够O(1)时间完成。 以及内存管理,包括内部数据结构的实现、gc的执行效率等,重在优化性能。

对比当前热门语言如python、golang,虚拟机应提供协程和通信机制,扩展性好,执行效率有时候反倒不是特别重要。

lua作为一门学术性语言,存在意义是为了发paper,设计者并没有过多为游戏、后端服务器等场景做调优,总体来说,执行效率一般。但好在代码量小,可以作为小白鼠来剖析。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171229G0RX8600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券