Actions

Difference between revisions of "IC10"

From Unofficial Stationeers Wiki

(copied mips from blog post)
 
Line 1: Line 1:
 +
Keywords:
 +
 +
<pre>
 +
l
 +
s
 +
ls
 +
alias
 +
move
 +
add
 +
sub
 +
slt
 +
and
 +
or
 +
xor
 +
nor
 +
mul
 +
div
 +
mod
 +
j
 +
bltz
 +
bgez
 +
blez
 +
bgtz
 +
beq
 +
bne
 +
jr
 +
brltz
 +
brgez
 +
brlez
 +
brgtz
 +
breq
 +
brne
 +
sqrt
 +
round
 +
trunc
 +
ceil
 +
floor
 +
max
 +
min
 +
abs
 +
log
 +
exp
 +
rand
 +
yield
 +
</pre>
 +
 
<pre>
 
<pre>
 
// Text after a // will be ignored to the end of the line. The amount of white
 
// Text after a // will be ignored to the end of the line. The amount of white

Revision as of 22:33, 13 September 2018

Keywords:

l
s
ls
alias
move
add
sub
slt
and
or
xor
nor
mul
div
mod
j
bltz
bgez
blez
bgtz
beq
bne
jr
brltz
brgez
brlez
brgtz
breq
brne
sqrt
round
trunc
ceil
floor
max
min
abs
log
exp
rand
yield
// Text after a // will be ignored to the end of the line. The amount of white
// space between arguments isn't important, but new lines start a new command.

move    d s     // stores the value of s in d

add     d s t   // calculates s + t and stores the result in d
sub     d s t   // calculates s - t and stores the result in d
mul     d s t   // calculates s * t and stores the result in d
div     d s t   // calculates s / t and stores the result in d
mod     d s t   // calculates s mod t and stores the result in d. Note this
                // doesn't behave like the % operator - the result will be
                // positive even if the either of the operands are negative

slt     d s t   // stores 1 in d if s < t, 0 otherwise

sqrt    d s     // calculates sqrt(s) and stores the result in d
round   d s     // finds the rounded value of s and stores the result in d
trunc   d s     // finds the truncated value of s and stores the result in d
ceil    d s     // calculates the ceiling of s and stores the result in d
floor   d s     // calculates the floor of s and stores the result in d

max     d s t   // calculates the maximum of s and t and stores the result in d
min     d s t   // calculates the minimum of s and t and stores the result in d
abs     d s     // calculates the absolute value of s and stores the result in d
log     d s     // calculates the natural logarithm of s and stores the result
                // in d
exp     d s     // calculates the exponential of s and stores the result in d
rand    d       // selects a random number uniformly at random between 0 and 1
                // inclusive and stores the result in d

// boolean arithmetic uses the C convention that 0 is false and any non-zero
// value is true.
and     d s t   // stores 1 in d if both s and t have non-zero values,
                // 0 otherwise
or      d s t   // stores 1 in d if either s or t have non-zero values,
                // 0 otherwise
xor     d s t   // stores 1 in d if exactly one of s and t are non-zero,
                // 0 otherwise
nor     d s t   // stores 1 in d if both s and t equal zero, 0 otherwise


// Lines are numbered starting at zero
j             a // jumps to line a.
bltz      s   a // jumps to line a if s <  0
blez      s   a // jumps to line a if s <= 0
bgez      s   a // jumps to line a if s >= 0
bgtz      s   a // jumps to line a if s >  0
beq       s t a // jumps to line a if s == t
bne       s t a // jumps to line a if s != t

yield           // ceases code execution for this power tick

This is a sample timer command set, alternating between 1 for 1 tick (0.5s), then off for 2 ticks (1s).

move r0 0		// Line 0: move the value 0 to register0
sub r1 r0 3		// Line 1: subtract 3 from the value in r0 and write it to r1
bltz r1 4		// Line 2: jump to line 4 if r1 < 0 (skip the next line)
move r0 0		// Line 3: move the value 0 to register0 
slt o r0 1		// Line 4: if r0 < 1 write 1 to the output, otherwise 0.
add r0 r0 1		// Line 5: increment r0 by 1
yield			// Line 6: wait until next power tick (0.5s)
j 1			// Line 7: jump back to line 1