指令表语言(IL)
指令列表(IL)是一种汇编语言风格的编程语言,程序不易阅读,但执行速度最快。IL语言包含一系列的指令,每条指令占据一行,包含一个运算符和一个或多个用逗号隔开的操作数。操作数之间用逗号分隔。每行开始可以有标签,标签后要有冒号。每行结束可以有注释,注释用“(* *)”括起来。每行指令之间可以插入空行。IL 编辑器与ST编辑器的使用方式完全一致,本章节就不再赘述,相关操作请参见结构化文本语言(ST)。
IL指令
指令表由一系列指令组成。每条指令应在新的一行开始,应包含一个操作符,带有可选编辑器,对于特殊操作还有用逗号分隔的一个或多个操作数。操作数可以是常量、枚举值和变量。
指令前可以添加标识标号和紧随其后的冒号“:”开头,指令之间可以插入空行。
例如:
LABEL | OPERATOR | OPERAND | COMMENT |
---|---|---|---|
START: | LD | %IX1.0 | (* PUSH BUTTON *) |
ANDN | %MX5.0 | (* NOT INHIBITED *) | |
ST | %QX2.0 | (* FAN ON *) |
IL 语言支持两种修饰符C 和N。C 表示条件执行,只有当前一个表达式的值为真(TRUE)时,指令才被执行。N 与JMP、CAL 和RET 连用时表示条件非执行,只有当前一个表达式的值为假(FALSE)时,指令才被执行;其它情况下,表示操作数取负。下表中列出了IL的所有运算符以及它们的修饰符和相应意义。
运算符 | 修饰符 | 意义 |
---|---|---|
LD | N | 设置当前结果等于操作数 |
ST | N | 把当前结果存储到操作数位置 |
S | 若当前结果是TRUE,将操作数置位为1 | |
R | 若当前结果是FALSE,将操作数复位为0 | |
AND | N,( | 逻辑与 |
& | N,( | 逻辑与 |
OR | N,( | 逻辑或 |
XOR | N,( | 逻辑异或 |
NOT | 逻辑取反 | |
ADD | ( | 加 |
SUB | ( | 减 |
MUL | ( | 乘 |
DIV | ( | 除 |
MOD | ( | 取余 |
GT | ( | 比较 > |
GE | ( | 比较 >= |
EQ | ( | 比较 = |
NE | ( | 比较 <> |
LE | ( | 比较 <= |
LT | ( | 比较 < |
JMP | C,N | 跳转到标号 |
CAL | C,N | 调用 |
RET | C,N | 从被调的函数、功能块或程序返回 |
) | 递延的求值操作 |
IL语言简单应用实例如下图所示。