ST20-C1 STMICROELECTRONICS [STMicroelectronics], ST20-C1 Datasheet - Page 44

no-image

ST20-C1

Manufacturer Part Number
ST20-C1
Description
Instruction Set Reference Manual
Manufacturer
STMICROELECTRONICS [STMicroelectronics]
Datasheet
4.6 Comparisons and jumps
Implementation of languages with different representations of true and false
It is easy to implement programming languages that use a different representation of
true and false . For example, using
in place of eqc X and
in place of gt , does not affect the representation of a false result, but changes the
representation of true to -1, which is used in some programming languages.
4.6.2
The primary instruction eqc n loads Areg with a truth value — true if Areg is initially
equal to the instruction operand ( n ), false otherwise. Breg and Creg are unaffected.
gt and gtu take integer operands in Areg and Breg and produce a boolean result
which is loaded into Areg. They also load the value in Creg into Breg, saving a copy
of the initial Areg in Creg.
The gt instruction loads Areg with true if Breg > Areg, false otherwise, treating Areg
and Breg as signed values. Similarly gtu loads Areg with true if the unsigned value of
Breg is greater than the unsigned value of Areg; false otherwise.
4.6.3
There are two relative jump instructions; both are primary instructions.
The unconditional jump instruction, j n , adds its operand ( n ) to the address of the
instruction immediately following it and puts the result into Iptr, thus transferring
execution to another part of the program.
The conditional jump instruction, cj n , performs a jump if the value in Areg is 0 and
does not affect the evaluation stack. If the value in Areg is not 0 cj rotates the value in
Areg to the bottom of the evaluation stack and continues with the next instruction.
Consequently cj n serves as ‘jump if false ’ provided that the language being imple-
mented interprets 0 as false (see section 4.6.1).
4.6.4
The conditional expressions used in a conditional branch of an if construct are
compiled using the conditional jump. The statement:
This compiles to:
44/205
if ( E ) {
}
P
eqc X; not; adc 1
gt; not; adc 1
Comparison
Jump and conditional jump
Conditional transfer of control
L:
E; cj L;
P; j ENDIF;

Related parts for ST20-C1