Instruction Listing - philpax/skiron GitHub Wiki

load

Loads the value located in [src] into dst.

  • Opcode: 0x00
  • Operand Format: Destination, source (DstSrc)

store

Stores the value located in src into [dst].

  • Opcode: 0x01
  • Operand Format: Destination, source (DstSrc)

loadli

Load the immediate into the lower half of src.

  • Opcode: 0x02
  • Operand Format: Destination, unsigned immediate (DstUimm)

loadui

Load the immediate into the upper half of src.

  • Opcode: 0x03
  • Operand Format: Destination, unsigned immediate (DstUimm)

add

Add src1 and src2 together, and store the result in dst.

  • Opcode: 0x04
  • Operand Format: Destination, source, source (DstSrcSrc)

Unallocated opcode

add

Add the immediate to src, and store the result in dst.

  • Opcode: 0x06
  • Operand Format: Destination, source, immediate (DstSrcImm)

sub

Subtract src2 from src1, and store the result in dst.

  • Opcode: 0x07
  • Operand Format: Destination, source, source (DstSrcSrc)

mul

Multiply src1 by src2, and store the result in dst.

  • Opcode: 0x08
  • Operand Format: Destination, source, source (DstSrcSrc)

div

Divide src1 by src2, and store the result in dst.

  • Opcode: 0x09
  • Operand Format: Destination, source, source (DstSrcSrc)

not

Bitwise-NOT src, and store the result in dst.

  • Opcode: 0x0A
  • Operand Format: Destination, source (DstSrc)

and

Bitwise-AND src1 with src2, and store the result in dst.

  • Opcode: 0x0B
  • Operand Format: Destination, source, source (DstSrcSrc)

or

Bitwise-OR src1 with src2, and store the result in dst.

  • Opcode: 0x0C
  • Operand Format: Destination, source, source (DstSrcSrc)

xor

Bitwise-XOR src1 with src2, and store the result in dst.

  • Opcode: 0x0D
  • Operand Format: Destination, source, source (DstSrcSrc)

shl

Shift src1 by src2 bits to the left, and store the result in dst.

  • Opcode: 0x0E
  • Operand Format: Destination, source, source (DstSrcSrc)

shr

Shift src1 by src2 bits to the right, and store the result in dst.

  • Opcode: 0x0F
  • Operand Format: Destination, source, source (DstSrcSrc)

cmp

Compare dst to src, and update the flags register appropriately.

  • Opcode: 0x10
  • Operand Format: Destination, source (DstSrc)

j

Jump to the given label unconditionally.

  • Opcode: 0x11
  • Operand Format: Label (Label)

je

If the zero flag is set, jump to the given label.

  • Opcode: 0x12
  • Operand Format: Label (Label)

jne

If the zero flag is not set, jump to the given label.

  • Opcode: 0x13
  • Operand Format: Label (Label)

jgt

If the greater flag is set, jump to the given label.

  • Opcode: 0x14
  • Operand Format: Label (Label)

jlt

If the less flag is set, jump to the given label.

  • Opcode: 0x15
  • Operand Format: Label (Label)

Unallocated opcodes (41 free)

halt

Halt operation.

  • Opcode: 0x3F
  • Operand Format: None (None)

call

Store the current instruction pointer in ra, and then jump to the given label.

  • Opcode: Pseudo
  • Operand Format: Label (Label)

callsv

Push the current return address, call the given label, and pop the return address.

  • Opcode: Pseudo
  • Operand Format: Label (Label)

dw

Create a word containing arg2.

  • Opcode: Pseudo
  • Operand Format: None (None)

jr

Jump to the given register.

  • Opcode: Pseudo
  • Operand Format: Label (Label)

loadi

Load the given 32-bit immediate, or label, into a register.

  • Opcode: Pseudo
  • Operand Format: Unsigned immediate (Uimm)

move

Copy the value in src to dst.

  • Opcode: Pseudo
  • Operand Format: Destination, source (DstSrc)

pop

Pop the given register from the stack (i.e. load register, sp; add sp, 4).

  • Opcode: Pseudo
  • Operand Format: Destination (Dst)

push

Push the given register onto the stack (i.e. add sp, -4; store sp, register).

  • Opcode: Pseudo
  • Operand Format: Destination (Dst)

rep

Repeat the following instruction arg1 times.

  • Opcode: Pseudo
  • Operand Format: Unsigned immediate (Uimm)