Компилятор поддерживает ряд операторов которые перечислены в таблице 3.5 (чем выше положение в таблице, тем выше приоритет оператора). Выражения могут заключаться в круглые скобки, такие выражения вычисляются перед выражениями за скобками.
Таблица 3.5
Приоритет | Символ | Описание | Приоритет | Символ | Описание |
! | Логическое отрицание | <= | Меньше или равно | ||
~ | Побитное отрицание | > | Больше чем | ||
- | Минус | >= | Больше или равно | ||
* | Умножение | == | Равно | ||
/ | Деление | != | Не равно | ||
+ | Суммирование | & | Побитное И | ||
- | Вычитание | ^ | Побитное исключающее ИЛИ |
<< | Сдвиг влево | | | Побитное ИЛИ | ||
>> | Сдвиг вправо | && | Логическое И | ||
< | Меньше чем | || | Логическое ИЛИ |
Логическое отрицание
Символ:!
Описание: Возвращает 1 если выражение равно 0, и наоборот
Приоритет: 14
Пример: ldi r16,!0xf0; В r16 загрузить 0x00
Побитное отрицание
|
|
Символ: ~
Описание: Возвращает выражение в котором все биты проинвертированы
Приоритет: 14
Пример: ldi r16, ~0xf0; В r16 загрузить 0x0f
Минус
Символ: -
Описание: Возвращает арифметическое отрицание выражения
Приоритет: 14
Пример: ldi r16,-2; Загрузить -2(0xfe) в r16
Умножение
Символ: *
Описание: Возвращает результат умножения двух выражений
Приоритет: 13
Пример: ldi r30, label*2
Деление
Символ: /
Описание: Возвращает целую часть результата деления левого выражения на правое
Приоритет: 13
Пример: ldi r30, label/2
Суммирование
Символ: +
Описание: Возвращает сумму двух выражений
Приоритет: 12
Пример: ldi r30, c1+c2
Вычитание
Символ: -
Описание: Возвращает результат вычитания правого выражения из левого
Приоритет: 12
Пример: ldi r17, c1-c2
Сдвиг влево
Символ: <<
Описание: Возвращает левое выражение сдвинутое влево на число бит указанное справа
Приоритет: 11
Пример: ldi r17, 1<<bitmask; В r17 загрузить 1 сдвинутую влево bitmask раз
Сдвиг вправо
Символ: >>
Описание: Возвращает левое выражение сдвинутое вправо на число бит указанное справа
Приоритет: 11
Пример: ldi r17, c1>>c2; В r17 загрузить c1 сдвинутое вправо c2 раз
Меньше чем
Символ: <
Описание: Возвращает 1 если левое выражение меньше чем правое (учитывается знак), и 0 в противном случае
Приоритет: 10
Пример: ori r18, bitmask*(c1<c2)+1
Меньше или равно
Символ: <=
Описание: Возвращает 1 если левое выражение меньше или равно чем правое (учитывается знак), и 0 в противном случае
Приоритет: 10
Пример: ori r18, bitmask*(c1<=c2)+1
Больше чем
Символ: >
Описание: Возвращает 1 если левое выражение больше чем правое (учитывается знак), и 0 в противном случае
|
|
Приоритет: 10
Пример: ori r18, bitmask*(c1>c2)+1