Assembler Reference

3.6.9Operator precedence

The assembler includes an extensive set of operators for use in expressions. Many of the operators resemble their counterparts in high-level languages such as C (see Unary operators on page 3-26 and Binary operators on page 3-28).

There is a strict order of precedence in their evaluation:

1.Expressions in parentheses are evaluated first.

2.Operators are applied in precedence order.

3.Adjacent unary operators are evaluated from right to left.

4.Binary operators of equal precedence are evaluated from left to right.

Note

The order of precedence is not exactly the same as in C.

For example, (1 + 2 :SHR; 3) evaluates as (1 + (2 :SHR: 3)) = 1 in armasm. The equivalent expression in C evaluates as ((1 + 2) >> 3) = 0.

You are recommended to use brackets to make the precedence explicit.

Table 3-2 shows the order of precedence of operators in armasm, and a comparison with the order in C.

If your code contains an expression which would parse differently in C, armasm normally gives a warning:

A1466W: Operator precedence means that expression would evaluate differently in C

The warning is not given if you use the -unsafecommand line option.

Table 3-2 Operator precedence in armasm

armasm precedence

equivalent C operators

 

 

unary operators

unary operators

 

 

* / :MOD:

* / %

 

 

string manipulation

n/a

 

 

:SHL: :SHR: :ROR: :ROL:

<< >>

3-24

Copyright © 2000, 2001 ARM Limited. All rights reserved.

ARM DUI 0068B

Page 102
Image 102
ARM VERSION 1.2 manual Operator precedence, String manipulation