Previous Table of Contents Next

IISC Instruction Listing

Memory Access Instructions

  1. Memory access instructions are concerned with loading data to registers and storing data in memory.

  2. The Memory Access Instructions are...

    InstructionEncodingPrimary OperandSecondary Operand
    LoadLRegisterRegister
    Load ImmediateIRegisterNumber
    StoreSRegisterRegister
    CopyCRegisterRegister

Load

  1. The Load instruction will copy a number of bytes to the primary operand starting at the address specified by contents of the secondary operand.

  2. The number of bytes copied to the primary operand will be determined by the size of the data type specifier given with the instruction.

  3. The secondary operand register is expected to contain a memory address value of the @ data type format.

  4. The contents of the primary operand register are overwritten with this instruction.

Load Immediate

  1. The Load Immediate instruction will set the contents of the primary operand register to that of a constant value encoded in the instruction.

  2. This constant value can be one of...

  3. The contents of the primary operand register are overwritten with this instruction.

Store

  1. The Store instruction will copy a number of bytes from the secondary operand register to a series of bytes in memory beginning at the address specified by the contents of the primary operand register.

  2. The number of bytes copied from the secondary operand register will be determined by the size of the data type specifier given with the instruction.

  3. The primary operand register is expected to contain a memory address value of the @ data type format.

Copy

  1. The Copy instruction will copy the contents of the secondary operand register to the primary operand register.

  2. The contents of the primary operand register are overwritten with this instruction.

Arithmetic Instructions

  1. Arithmetic instructions performed using signed word data types expect the format of those types to be two's complement.

  2. The Arithmetic Instructions are...

    InstructionEncodingPrimary OperandSecondary Operand
    Adddition+Register (Addend)Register (Addend)
    Subtraction-Register (Minuend)Register (Subtrahend)
    Multiplication*Register (Multiplier)Register (Multiplicand)
    Quotient/Register (Dividend)Register (Divisor)
    Remainder%Register (Dividend)Register (Divisor)

Addition

  1. The Addition instruction performs binary addition on the contents of the primary and secondary operand registers.

  2. The primary operand register is overwritten with the result of the addition.

Subtraction

  1. The Subtraction instruction performs binary subtraction on the contents of the primary and secondary operand registers.

  2. The contents of the secondary operand register are subtracted from the contents of the primary operand register.

  3. The primary operand register is overwritten with the result of the subtraction.

Multiplication

  1. The Multiplication instruction performs binary multiplication on the contents of the primary and secondary operand registers.

  2. The contents of the primary operand register are multiplied by the contents of the secondary operand register.

  3. The primary operand register is overwritten with the result of the multiplication.

Quotient

  1. The Quotient instruction performs binary division on the contents of the primary and secondary operand registers.

  2. The contents of the primary operand register are divided by the contents of the secondary register.

  3. The primary operand register is overwritten with the quotient result of the division.

Remainder

  1. The Remainder instruction performs binary division on the contents of the primary and secondary operand registers.

  2. The contents of the primary operand register are divided by the contents of the secondary register.

  3. The primary operand register is overwritten with the remainder result of the division.

  4. The Remainder instruction is not supported for any floating point data types. If the Remainder instruction is provided a floating point data type, it shall be interpreted as the No Operation instruction.

Binary Logic Instructions

  1. The Binary Logic instructions are...

    InstructionEncodingPrimary OperandSecondary Operand
    AND&RegisterRegister
    OR|RegisterRegister
    XOR^RegisterRegister
    NOT!Register-

AND

  1. The AND instruction performs a binary logical AND on the contents of the primary and secondary operand registers.

  2. The primary operand register is overwritten with the result of this instruction.

OR

  1. The OR instruction performs a binary logical OR on the contents of the primary and secondary operand registers.

  2. The primary operand register is overwritten with the result of this instruction.

XOR

  1. The XOR instruction performs a binary logical XOR on the contents of the primary and secondary operand registers.

  2. The primary operand register is overwritten with the result of this instruction.

NOT

  1. The NOT instruction performs a binary logical NOT on the contents of the primary register.

  2. The primary operand register is overwritten with the result of this instruction.

Conditional Execution Instructions

  1. The Conditional Execution instructions are...

    InstructionEncodingPrimary OperandSecondary Operand
    If Greater or EqualgRegisterRegister
    If Greater>RegisterRegister
    If Less or EquallRegisterRegister
    If Less<RegisterRegister
    If Equal=RegisterRegister
    If Not Equal_RegisterRegister
  2. Conditional execution instructions will perform a comparison on two register values, and execute the next instruction if the comparison is true. If the comparison is false, the next instruction will be skipped.

  3. Conditional Execution instructions do not change the contents of their register operands.

If Greater or Equal

  1. The If Greater or Equal instruction will execute the next instruction if the contents of the primary operand register are greater or equal to the contents of the secondary operand register.

If Greater

  1. The If Greater instruction will execute the next instruction if the contents of the primary operand register are greater than the contents of the secondary operand register.

If Less or Equal

  1. The If Less or Equal instruction will execute the next instruction if the contents of the primary operand register are less than or equal to the contents of the secondar operand register.

If Less

  1. The If Less instruction will execute the next instruction if the contents of the primary operand register are less than the contents of the secondary operand register.

If Equal

  1. The If Equal instruction will execute the next instruction if the contents of the primary operand register are equal to the contents of the secondary operand register.

If Not Equal

  1. The If Not Equal instruction will execute the next instruction if the contents of the primary operand register are not equal to the contents of the secondary operand register.

Bit Manipulation Instructions

  1. The Bit Manipulation Instructions are...

    InstructionEncodingPrimary OperandSecondary Operand
    Logical Shift LeftORegisterRegister
    Logical Shift RightoRegisterRegister
    Arithmetic Shift RightARegisterRegister
    Rotate Bits LeftRRegiseterRegister
    Rotate Bits RightrRegisterRegister
  2. All bit manipulation instructions will move a number of bits in a register determined by the word data type specifier.

  3. The number of places that bits are moved is determined by the number represented by the least significant byte in the secondary operand register. The contents of the secondary operator register are always assumed to be an Unsigned Byte word data type.

  4. The word data type specifier establishes a boundary with a width of a number of bits equal to the bit size of the specified data type. Bits are then moved in and out of this boundary.

  5. For every bit moved out of a boundary, a new bit must be moved into the boundary on the opposite side from the bit which was moved out. The value of bits being moved into the boundary are determined by the individual instruction being used.

Logical Shift Left

  1. The Logical Shift Left instruction will shift bits towards higher significant place values.

  2. If a bit is already at the highest place value, it is moved out of the boundary.

  3. As bits are shifted out of the highest place value, new zero bits are moved into the lowest place value.

Logical Shift Right

  1. The Logical Shift Right instruction will shift bits towards lower significant place values.

  2. If a bit is already at the lowest place value, it is moved out of the boundary.

  3. As bits are shifted out of the lowest place value, new zero-bits are moved into the highest place value.

Arithmetic Shift Right

  1. The Arithmetic Shift Right instruction will shift bits towards lower significant place values.

  2. If a bit is already at the lowest place value, it is moved out of the boundary.

  3. As bits are shifted out of the lowest place value, new one-bits are moved into the highest place value.

Rotate Left

  1. The Rotate Left instruction will shift bits towards higher significant place values.

  2. If a bit is already at the highest place value, it is moved to the lowest place value when shifted.

Rotate Right

  1. The Rotate Right instruction will shift bits towards lower significant place values.

  2. If a bit is already at the lowest place value, it is moved to the highest place value when shifted.

Conversion Instructions

  1. The Conversion Instructions are...

    InstructionEncodingPrimary OperandSecondary Operand
    Sign ExtendxRegisterWord Data Type
    Zero ExtendzRegisterWord Data Type
    Absolute ValueaRegister-
    NegatenRegister-
    Convert to Large Floating PointFRegister-
    Convert to Small Floating PointfRegister-
    Convert from Large Floating PointURegister-
    Convert from Small Floating PointuRegister-
  2. All Conversion instructions will overwrite the contents of the primary operand register.

  3. The Word Data Type required for the secondary operand in the Sign Extend and Zero Extend instructions is an encoded word data type.

Sign Extend

  1. The Sign Extend instruction will onvert a signed vinary value of a size given by the word data type specifier to a signed binary value of a size corresponding to the size of the data type specified by the secondary operand.

  2. The Sign Extend instruction expects the contents of the primary operand register to be a two's complement binary format.

Zero Extend

  1. The Zero Extend instruction will convert an unsigned binary value of a size given by the word data type specifier to an unsigned binary value of a size corresponding to the size of the data type specified by the secondary operand.

  2. The Zero Extend instruction expects the contents of the primary operand register to be an unsigned binary format.

Absolute Value

  1. The Absolute Value instruction will convert a signed integer representation to a unsigned integer.

  2. This instruction expects the contents of the primary operand register to be a two's complement binary format.

Sign

  1. The Sign instruction will convert an unsigned integer value to its corresponding two's complement representation.

  2. Due to the precision limitations of two's complement binary representation, the value of the most significant bit will not be included in the value conversion. For any unsigned data type with n bits of precision, the Sign instruction is only capable of converting values represented with 2n-1 bits.

Convert to Large Floating Point

  1. This instruction will convert a value of a type specified by the word data type specifier to a Large Floating Point data type.

  2. This instruction expects that the primary operand register does not already contain a Large Floating Point value.

Convert to Small Floating Point

  1. This instruction will convert a value of a type specified by the word data type specifier to a Small Floating Point data type.

  2. This instruction expects that the primary operand register does not already contain a Small Floating Point value.

Convert from Large Floating Point

  1. This instruction will convert a Large Floating Point value to another data type determined by the word data type specifier.

  2. This instruction expects that the primary operand register contains a Large Floating Point value.

  3. The floating point value is truncated such that the resulting data type contains the value originally held in the significand of the floating point.

Convert from Small Floating Point

  1. This instruction will convert a Small Floating Point value to another data type determined by the word data type specifier.

  2. This instruction expects that the primary operand register contains a Small Floating Point value.

  3. The floating point value is truncated such that the resulting data type contains the value originally held in the significand of the floating point.

Special Instructions

  1. The Special instructions are...

    InstructionEncodingPrimary Operand
    Unconditional Jump@Register
    System CallyMultiple Registers

Unconditional Jump

  1. The Unconditional Jump instruction will set the address held in the Instruction special purpose register to the address held in the primary operand register.

  2. The primary operand register is assumed to contain a memory address.

System Call

  1. The System Call instruction is provided with a number of registers.

  2. The number, ordering, and contents of the registers are dependent on the underlying system's system call implementation. It is recommended to provide a system-agnostic interface library which other IISC programs may link to in order to access system resources. This will improve the portability of IISC programs.