豫豫言文档API ATLAS
入口包说明.html
62 模块1862 名称
← 全部模块

模块 / 45

表指令。豫

表指令。豫

12公开名称

表描述址

公开
化「整数」而「整数」

文言:表之批量指令:table.init、elem.drop、table.copy、table.grow、table.fill,及表与元素段之助手。汉语:表指令:表描述与元素段条的访问助手,元素段的逐项填表(实例化时初始化主动段与运行期 table.init 共用),以及 0xFC 前缀的 table.init/elem.drop/table.copy/table.grow/table.fill(子操作码 12、13、14、15、17)。表的存储在解析时按“上限”(没有声明就是最小加 1024)一次分配好,所以 table.grow 只在这个容量之内增长,超出则返回 -1。范围一律按无符号数检查并防加法溢出,越界以退出码 124 陷入;操作数是 i32 或引用(低字);引用值是 (函数号 << 3) | 2,空引用为 0。

表项检查

公开
化「整数」而化「整数」而「有」

暂无说明。

元素段条

公开
化「整数」而「整数」

暂无说明。

填元素逐个

公开
化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「有」

文言:填元素:自元素段之向量游标起,逐项写入表(标志小于四者为函数号之变长整数,否则为常量式,以指定之基为工作栈)。汉语:把元素段里从 游 开始的 个数 个元素依次写到 数据 起的表里(偏 是表内起始下标):标志小于 4 的段是函数号的 LEB128,写成 (函数号 << 3) | 2;否则每项是常量表达式,用以 基 为起点的工作栈求值(实例化时用值栈基,运行期 table.init 用当前栈针以上的空闲区)。

元素可用长

公开
化「整数」而「整数」

文言:元素段之可用长:已弃者与声明式者为零。汉语:元素段当前可用的元素个数:已被丢弃的段、声明式的段(标志 3 与 7)都是 0,其余是个数。

元素游标

公开
化「整数」而化「整数」而「整数」

暂无说明。

表初始化

公开
化「整数」而化「整数」而「整数」

文言:table.init:自元素段取若干项入表;操作数自底至顶为目起、源起、个数。汉语:table.init 元素段号 表号:栈上依次是目标起始下标、源起始下标、个数(各 i32);源范围必须在段的可用长之内,目标范围必须在表的当前大小之内,否则陷入 124;成功后弹出三个操作数。

丢弃元素段

公开
化「整数」而化「整数」而「整数」

文言:elem.drop:丢弃元素段。汉语:elem.drop 元素段号:把该段标为已弃,此后可用长为 0;重复丢弃合法;不动操作数。

表复制

公开
化「整数」而化「整数」而「整数」

文言:table.copy:表间或表内复制,可重叠。汉语:table.copy 目表 源表:栈上依次是目标起始下标、源起始下标、个数;两个范围都必须在各自表的当前大小之内,否则陷入 124;用内存复制(允许重叠,语义同 memmove);成功后弹出三个操作数。

填表逐个

公开
化「整数」而化「整数」而化「整数」而「有」

暂无说明。

表增长

公开
化「整数」而化「整数」而「整数」

文言:table.grow:增长表,新项以给定引用填之,返旧大小,失败返负一。汉语:table.grow 表号:栈上是初值引用与增长的项数(i32,栈顶);新大小超过上限(解析时分配的容量)或加法溢出则返回 -1、表不变;否则把新增的项填成初值,返回旧大小。弹出一个槽,结果覆盖原来的初值槽。

表填充

公开
化「整数」而化「整数」而「整数」

文言:table.fill:以引用填表之一段。汉语:table.fill 表号:栈上依次是起始下标、引用值、项数;范围必须在表的当前大小之内,否则陷入 124;弹出三个操作数。