[Toc][Index]

Operators, Assignment Expressions, and Conditional Expressions


The following operators are valid in the PMI syntax: 



<postfix unary additive op>  ::= '++'  |  '--'
<additive op>  ::= '+'  |  '-'
<shift op> ::= '<<'  |  '>>'
<bitwise op> ::= '&'  |  '|'  |  '^'
<relational op> ::= '<'  |  '>'  |  '==' | '<=' |  '>=' |  '!='
<binary assignment op> ::= '&=' | '|= ' | '<<=' |  '>>=' | '+=' | '-=' | '^='
<unary negation op>  ::= '˜'
<assignment op>  ::= '='


Both assignment and conditional expressions in the PMI syntax are limited 
to a single expression term.  The value of a conditional expression is 
either TRUE (nonzero) or FALSE (zero). 
An assignment expression and example are shown below. 



<assignment>  ::=
<register><postfix unary additive op>  |

<register><binary assignment op> [<constant>|<register>]  |

<register><assignment op>  { <PMI Keyvariable>  |
                             <register operand>|<constant>  } |

<register><assignment op>  {<register operand>  |  <PMI keyvariable>}
                           {<additive op>|<shift op>  |  <bitwiseop>}
                           {<constant>  |  <register>

<register operand>  ::= [<unary negation op>]<register>


Examples: 



r0 = VerticalRefresh;
r0 <<= 0x10;
r1++; r2--;
r1 = ˜r2 ^ 0x04;
r2 = XResolution <<  r1;
r1 = r2 + 0xffff;



A conditional expression and example are shown below. 



<condition>  ::=
          '(' { <PMI Keyvariable>  |  <register>} {<relational op> | <bitwise op>}

          { <PMI Keyvariable>  |  <register>  |  <constant>  } ')'


Examples: 



(XResolution == 1024)
(r1 & 0x0fe0)
(r2 == VerticalRefresh)




Created using Inf-PHP v.2 (c) 2003 Yuri Prokushev
Created using Inf-HTML v.0.9b (c) 1995 Peter Childs