Gamevar operators: Difference between revisions

From EDukeWiki
Jump to navigation Jump to search
clarify modulo op
add some general info; and to div and mod. Make % sign undefined, see http://en.wikipedia.org/wiki/Modulo_operation C89 vs. C99.
Line 2: Line 2:
<'''operator'''>'''varvar''' <gamevar> <value>
<'''operator'''>'''varvar''' <gamevar> <value>


Gamevar operators are commands that perform various mathematical operations on [[gamevar]]s.
Gamevar operators are commands that perform various mathematical and bitwise logical operations on [[gamevar]]s. 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:
For example:


  setvar temp 1 // assigns a value of 1 to the gamevar ''temp''.
  setvar temp 3 // assigns a value of 1 to the gamevar ''temp''.
   
   
  addvar temp 1 // adds 1 to ''temp'', causing its value to become 2.
  addvar temp 1 // adds 1 to ''temp'', causing its value to become 2.
Line 41: Line 41:
|<code>/</code>
|<code>/</code>
|&#247;
|&#247;
|division
|division with rounding toward 0
|Ensure that <value> does not equal 0 at any time.
|Ensure that <value> does not equal 0 at any time.
|-
|-
Line 48: Line 48:
|
|
|[[Wikipedia:Modulo operation|modulo]], remainder
|[[Wikipedia:Modulo operation|modulo]], remainder
|Ensure that <value> does not equal 0 at any time; sign of the result is that of left hand side operand.
|Ensure that <value> does not equal 0 at any time; '''It is undefined whether the sign of the result follows the divisor or the dividend''' (for now). <strike>sign of the result is that of left hand side operand</strike>
|-
|-
|and
|and

Revision as of 10:54, 18 April 2012

<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 3 // 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 Ensure that <value> does not equal 0 at any time.
mod % modulo, remainder Ensure that <value> does not equal 0 at any time; It is undefined whether the sign of the result follows the divisor or the dividend (for now). sign of the result is that of left hand side operand
and & bitwise AND The bits in the result are set only if they were set in both of the values being operated on.
or | bitwise OR The bits in the result are set only if they were set in either of the values being operated on.
xor ^ bitwise XOR The bits in the result are set if only one of the values being operated on has those bits set.

Commands with an additional "var" suffix take gamevars rather than constants or defined labels for their inputs. As an alternate short form, "varvar" can be dropped from these commands; for example ife serves an an alias for ifvarvare.