Gamevar operators

From EDukeWiki
Revision as of 09:26, 22 April 2012 by Helixhorned (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

<operator>var <gamevar> <value>
<operator>varvar <gamevar> <value>

Gamevar operators are commands that perform various mathematical and bitwise logical operations on gamevars. The first argument must be a writable gamevar and is taken as the destination as well and the first operand (2-address code).

For example:

setvar temp 1 // assigns a value of 1 to the gamevar temp.

addvar temp 1 // adds 1 to temp, causing its value to become 2.

mulvar temp 2 // multiplies temp by 2, causing its value to become 4.
Operator C/C++ Math Description Notes
set = = assignment
add + + addition
sub - subtraction
mul * × multiplication
div / ÷ division with rounding toward 0 for nonnegative dividends Ensure that <value> does not equal 0 at any time. The rounding behavior is undefined for negative dividends.
mod % modulo, remainder Ensure that <value> does not equal 0 at any time; sign of the result is that of left hand side operand (dividend).
and & bitwise AND The bits in the result are set only if they were set in both of the values being operated on. Ex. (all numbers are base-2):

01001010 AND
11110100 is
01000000

or | bitwise OR The bits in the result are set only if they were set in either of the values being operated on. Ex.:

01001010 OR
11110100 is
11111110

xor ^ bitwise XOR The bits in the result are set if only one of the values being operated on has those bits set. Ex.:

01001010 XOR
11110100 is
10111110

Commands with an additional "var" suffix take gamevars rather than constants or defined labels for their inputs.