9 operator precedence – ARM VERSION 1.2 User Manual

Page 102

Advertising
background image

Assembler Reference

3-24

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

ARM DUI 0068B

3.6.9

Operator 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 a
nd 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

-unsafe

command 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:

<< >>

Advertising