计算指令
UO
一元运算。一元操作符有:”!” 对 boolean 值进行取反,”-“,对 number 值取相反值。
参数说明:共1参数;参数1:一元操作符
栈行为:消费1,产出1
堆行为:无
- 代码:return -(-1)
- 指令:
- #0 LDC_D -1
- #1 UO -
- #2 RETURN 0
DO
二元运算。堆栈【第一个操作数,第二个操作数】,二元操作符有
数学运算 | 位运算 | 比较运算 | 逻辑运算 | ||||
+ | 加法 | & | 按位于运算 | > | 大于 | || | 逻辑或 |
- | 减法 | | | 按位或运算 | >= | 大于等于 | && | 逻辑与 |
* | 乘法 | ! | 按位取反 | < | 小于 | ||
/ | 除法 | ^ | 异或 | <= | 小于等于 | ||
\ | 整除 | << | 左位移 | == | 等于 | ||
% | 取摸 | >> | 有符号右位移 | != | 不等于 | ||
(…) | 计算优先级 | >>> | 无符号右位移 |
参数说明:共1参数;参数1:二元操作符
栈行为:消费2,产出1
堆行为:无
- 代码:return 1 + 2
- 指令:
- #0 LDC_D 1
- #1 LDC_D 2
- #2 DO +
- #3 RETURN 0
TYPEOF
计算堆栈顶元素的类型
参数说明:共1参数;参数1:二元操作符
栈行为:消费1,产出1
堆行为:无
- 代码:return abc[a]
- 指令:
- [0]
- #000 E_LOAD #
- #001 GET abc
- #002 E_LOAD #
- #003 GET a
- #004 COPY
- #005 TYPEOF
- #006 COPY
- #007 LDC_S string
- ...
产出的数据类型为字符产,取值如下表:
类型字符 | 含义 |
string | 通过 typeOf 计算得到的类型是 字符串 。 |
number | 通过 typeOf 计算得到的类型是 数字 。 |
boolean | 通过 typeOf 计算得到的类型是 布尔值 。 |
object | 通过 typeOf 计算得到的类型是 对象 。 |
list | 通过 typeOf 计算得到的类型是 集合 。 |
udf | 通过 typeOf 计算得到的类型是 Udf 或 Lambda函数 。 |
null | 通过 typeOf 计算得到的类型是 NULL 或 不存在这个属性。 |