A program written in IL language is a list of instructions. Each instruction is written on one line of text. An instruction may have one or more operands. Operands are variables or constant expressions. Each instruction may begin with a label, followed by the ":" character. Labels are used as destination for jump instructions.
The Workbench allows
you to mix ST and IL languages in textual program. ST is the
default language. When you enter IL instructions, the program must
be entered between "BEGIN_IL" and "END_IL" keywords, such as in the
following example
BEGIN_IL |
Comments
Comment texts can be entered at the end of a line containing an instruction. Comment texts have no meaning for the execution of the program. A comment text must begin with "(*" and end with "*)". Comments may also be entered on empty lines (with no instruction), and on several lines (i.e. a comment text may include line breaks). Comment texts cannot be nested.
Data flow
An IL complete statement is made of instructions
for:
- first: evaluating an expression (called current
result)
- then: use the current result for performing actions
Evaluation of expressions
The order of instructions in the program is the one used for evaluating expressions, unless parenthesis are inserted. Below are the available instructions for evaluation of expressions:
instruction | operand | meaning |
LD / LDN | any type | loads the operand in the current result |
AND (&) | boolean | AND between the operand and the current result |
OR / ORN | boolean | OR between the operand and the current result |
XOR / XORN | boolean | XOR between the operand and the current result |
ADD | numerical | adds the operand and the current result |
SUB | numerical |
subtract the operand from the current result |
MUL | numerical | multiply the operand and the current result |
DIV | numerical | divide the current result by the operand |
GT | numerical | compares the current result with the operand |
GE | numerical | compares the current result with the operand |
LT | numerical | compares the current result with the operand |
LE | numerical | compares the current result with the operand |
EQ | numerical | compares the current result with the operand |
NE | numerical | compares the current result with the operand |
Function call | func. arguments | calls a function |
Parenthesis | changes the execution order |
Notes: Instructions suffixed by "N" uses the boolean negation of the operand.
Actions
The following instructions perform actions according to the value of currrent result. Some of these instructions do not need a current result to be evaluated:
instruction | operand | meaning |
ST / STN | any type | stores the current result in the operand |
JMP | label | jump to a label - no current result needed |
JMPC | label | jump to a label if the current result is TRUE |
JMPNC / JMPCN | label | jump to a label if the current result is FALSE |
S | boolean | sets the operand to TRUE if the current result is TRUE |
R | boolean | sets the operand to FALSE if the current result is TRUE |
CAL | f. block |
calls a function block (no current result needed) |
CALC | f. block | calls a function block if the current result is TRUE |
CALNC / CALCN | f. block | calls a function block if the current result is FALSE |
Notes: Instructions suffixed by "N" uses the
boolean negation of the operand.