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