Lua 虚拟机寄存器大小

在基于寄存器的 Lua 虚拟机中,寄存器的大小是固定的吗? 还是它是一种动态结构?

我在这里的第17页找到了一个字节码示例,其中常数字符串“hello”被加载到一个寄存器中,因此它必须是动态的?寄存器这样做是不是不寻常的?

http://luaforge.net/docman/83/98/ANoFrillsIntroToLua51VMInstructions.pdf

点赞
用户88888888
用户88888888

每个寄存器都包含一个 Lua 值。Lua 值在 C 中被实现为带标签的联合体。参见:Lua 5.0 的实现。这个带标签的联合体通过值来存储小类型(布尔值,数字),而将其他所有东西(字符串、表、函数等)存储为一个指针。因此,寄存器的大小是恒定的,尽管比一个本机字长大。

2015-05-17 00:04:43