| |||
| Home > Assembler Reference > Expressions, literals, and operators > Binary operators | |||
Binary operators are written between the pair of subexpressions they operate on.
Binary operators have lower precedence than unary operators. Binary operators appear in this section in order of precedence.
The order of precedence is not the same as in C, see Operator precedence.
Multiplicative operators have the highest precedence of all binary operators. They act only on numeric expressions.
Table 3.5 shows the multiplicative operators.
Table 3.6 shows the string manipulation operators.
In the slicing operators LEFT and RIGHT:
A must
be a string
B must be a numeric expression.
In CC, A and B must
both be strings.
Shift operators act on numeric expressions, shifting or rotating the first operand by the amount specified by the second.
Table 3.7 shows the shift operators.
Table 3.7. Shift operators
Operator | Usage | Explanation |
|---|---|---|
|
| Rotate A left by B bits |
|
| Rotate A right by B bits |
|
| Shift A left by B bits |
|
| Shift A right by B bits |
SHR is a logical shift and does not propagate
the sign bit.
Addition and subtraction operators act on numeric expressions.
Logical operators act on numeric expressions. The operation is performed bitwise, that is, independently on each bit of the operands to produce the result.
Table 3.8 shows addition, subtraction, and logical operators.
Table 3.9 shows the relational operators. These act on two operands of the same type to produce a logical value.
The operands can be one of:
numeric
program-relative
register-relative
strings.
Strings are sorted using ASCII ordering. String A is
less than string B if it is a leading substring
of string B, or if the left-most character in
which the two strings differ is less in string A than
in string B.
Arithmetic values are unsigned, so the value of 0>-1 is {FALSE}.
These are the operators with the lowest precedence. They perform the standard logical operations on their operands.
In all three cases both A and B must be expressions that evaluate
to either {TRUE} or {FALSE}.
Table 3.10 shows the Boolean operators.