ZHCUAV7Z september 1995 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
数学或逻辑运算符的操作数必须是正确定义的表达式。也就是说,必须使用正确数量的操作数,而且运算必须有意义。例如,不能对浮点值进行 XOR 运算。此外,正确定义的表达式仅包含符号或汇编时常量,它们已提前定义,然后才能出现在指令的表达式中。
三个主要因素会影响表达式求值顺序:
圆括号 | 总是首先计算圆括号中的表达式。 8 / (4 / 2) = 4,但 8 / 4 / 2 = 1 不能 用大括号 ( { } ) 或方括号 ( [ ] ) 代替圆括号。 |
优先级组 | 表 4-5 中列出的运算符分为九个优先级组。当圆括号不能确定表达式求值顺序时,首先计算优先级最高的运算。 8 + 4 / 2 = 10(首先计算 4 / 2) |
从左到右求值 | 当圆括号和优先级组不能确定表达式求值顺序时,表达式从左到右求值,但第 1 组是从右到左求值。 8 / 4*2 = 4,但 8 / (4*2) = 1 |
表 4-5 根据优先级组列出了可在表达式中使用的运算符。
组(1) | 运算符 | 描述(2) |
---|---|---|
1 | + - ~ ! | 一元加 一元减 一的补码 逻辑非 |
2 | * / % | 乘法 除法 模数 |
3 | + - | 加法 减法 |
4 | << >> | 左移 右移 |
5 | < <= > >= | 小于 小于或等于 大于 大于或等于 |
6 | =[=] != | 等于 不等于 |
7 | 且 | 按位与 |
8 | ^ | 按位异或 (XOR) |
9 | | | 按位或 |
在汇编期间执行算术运算时,汇编器会检查是否有上溢和下溢情况。每当发生上溢或下溢时,汇编器都会发出警告(“value truncated”消息)。汇编器不 检查乘法中的上溢或下溢。