使用 cloc 统计代码行数
写了两个 elisp 函数

lua 5.1 中的函数常量表大小限制

Garfileo posted @ 2010年6月21日 17:13 in 业余程序猿的足迹 with tags Lua , 4662 阅读

用 lua 的 table 来构造一份数据文件,这个数据文件包含了43w 多个三维点数据。用 lua 加载该数据文件时,结果出现“constant table overflow”错误。
这个错误是因 lua 的函数最多可以接受包含 2^18 个常量的表。

问:为什么要有这个限制?

曰:是因为 lua 虚拟机是基于寄存器的,而非堆栈。lua 的访问常量表的指令码所占据的寄存器长度为 18 位,因此它最多能接受的常量表大小为 (2^18 -1)。 

问:为啥要基于寄存器来实现虚拟机?

曰:为了快。

问:那我该如何处理元素数量大于 (2^18 -1) 的表?

曰:可将一个大型的表分割为多个子表。

又曰:lua 5.2 将常量表的大小提升到 (2^26 - 1)。

转载时,希望不要链接文中图片,另外请保留本文原始出处:http://garfileo.is-programmer.com

  • 无匹配

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter