是目标指令标签。
29
goto/16
目标
2900 0FFE - goto/16 002f // -01f1
跳转到当前位置-1F1H 的位置,002f 是目标指
令标签。
2A
goto/32
目标
2B
packed-switch
vx,
索引表偏移
量
实现一个 switch 语句,case 常
量是连续的。这个指令使用
索引
表
,vx 是在表中找到具体 case
的指令偏移量的索引,如果无法在
表中找到 vx 对应的索引将继续执
行下一个指令(即 default cas
e)。
2B02 0C00 0000 - packed-switch v2, 000
c // +000c
根据 v2 寄存器中的值执行 packed switch,索
引表的位置是当前指令位置+0CH,表如下所示:
0001 // 表类型:packed switch 表
0300 // 元素个数
0000 0000 // 基础元素
0500 0000 0: 00000005 // case 0: +0000
0005
0700 0000 1: 00000007 // case 1: +0000
0007
0900 0000 2: 00000009 // case 2: +0000
0009
2C
sparse-switch
vx,
查询表偏移
量
实现一个 switch 语句,case 常
量是非连续的。这个指令使用
查询
表
,用于表示 case 常量和每个 c
ase 常量的偏移量。如果 vx 无法
在表中匹配将继续执行下一个指
令(即 default case)。
2C02 0c00 0000 - sparse-switch v2, 000
c // +000c
根据 v2 寄存器中的值执行 sparse switch ,
查询表的位置是当前指令位置+0CH,表如下所
示:
0002 // 表类型:sparse switch 表
0300 // 元素个数
9cff ffff // 第一个 case 常量: -100
fa00 0000 // 第二个 case 常量: 250
e803 0000 // 第三个 case 常量: 1000
0500 0000 // 第一个 case 常量的偏移量: +5
0700 0000 // 第二个 case 常量的偏移量: +7
0900 0000 // 第三个 case 常量的偏移量: +9
2D
cmpl-float vx,
vy, vz
比较 vy 和 vz 的 float 值并在 vx
存入 int 型返回值
注
3
。
2D00 0607 - cmpl-float v0, v6, v7
比较 v6 和 v7 的 float 值并在 v0 存入 int 型返
回值。非数值默认为小于。如果参数为非数值将
返回-1。
2E
cmpg-float vx,
vy, vz
比较 vy 和 vz 的 float 值并在 vx
存入 int 型返回值
注
3
。
2E00 0607 - cmpg-float v0, v6, v7
比较 v6 和 v7 的 float 值并在 v0 存入 int 型返
回值。非数值默认为大于。如果参数为非数值将
返回 1。
2F
cmpl-double v
x, vy, vz
比较 vy 和 vz
注
2
的 double 值并
在 vx 存入 int 型返回值
注
3
。
2F19 0608 - cmpl-double v25, v6, v8
比较 v6,v7 和 v8,v9 的 double 值并在 v25 存
入 int 型返回值。非数值默认为小于。如果参数
为非数值将返回-1。
30
cmpg-double v
x, vy, vz
比较 vy 和 vz
注
2
的 double 值并
在 vx 存入 int 型返回值
注
3
。
3000 080A - cmpg-double v0, v8, v10
比较 v8,v9 和 v10,v11 的 double 值并在 v0 存
入 int 型返回值。非数值默认为大于。如果参数