GISC

General Instruction Set Computer

Created by Adam Gillion

What is GISC

GISC (pronounced "Jee-isc") stands for General Instruction Set Computer and is a custom Instruction Set Architecture (ISA) designed from scratch.

GISC offers a unique instruction set with a rich control flow and a hybrid architecture between RISC and CISC.

Current GISC version

The current GISC version is: GISC-1.2

Features:

GISC Logisim hardware simulations

The following videos show real simulated footage of a GISC-1 CPU


Full CPU running at 1 Hz


Cropped footage of CPU running at 2 Hz

Plans for GISC-2 and the future of GISC

GISC opcodes

As of GISC-1 these are the available GISC instructions:

  1. Load [opcode][register][literal value (2 hexadecimals)]
  2. ADD [opcode][emptyspace][register1][register2]
  3. SUB [opcode][emptyspace][minuend][subtrahend]
  4. MOV [opcode][emptyspace][destination][source]
  5. LOADM [opcode][emptyspace][register][memoryaddr]
  6. JMP [opcode][emptyspace][address(2 bytes)]
  7. JZ [opcode][register][address(2 bytes)]
  8. JP [opcode][register][address(2 bytes)]
  9. JN [opcode][register][address(2 bytes)]
  10. COM [opcode][address][register1][register2]
  11. GOTO [opcode][address (2 bytes)][times to loop]
  12. SAVEM [opcode][emptyspace][register][memoryaddr]
  13. HLT [opcode][emptyspace (3 bytes)]
  14. OUT [opcode][emptyspace][emptyspace][register]

Example GISC instruction usage

This example usage of GISC-1 instructions:

  1. 1309 - Load the value 9 into register 3
  2. 2001 - Add together the contents of register 0 (ACC) and register 1
  3. 3021 - Subtract the contents of register 1 from register 2
  4. 4040 - Move the contents of register 0 (ACC) to register 4
  5. 502c - Copy the contents of memory address 12 to register 2
  6. 6050 - Jump to ROM address 0x50
  7. 7360 - If register 3 == 0, jump to line 60 (hexadecimal, literal is 96)
  8. 8370 - If register 3 is positive, jump to line 70
  9. 9380 - If register 3 is negative, jump to line 80
  10. af32 - If register 3 = register 2 goto line 15 (f)
  11. b2a4 - GOTO line 2a, 4 times
  12. c0c3 - Save the contents of register 3 to memory address 12
  13. d*** - Halt all processes (*** = any number can go here)
  14. e**1 - Output the value in register 1 to the TTY in ASCII form

Try GISC

Write programs using the custom GISC instruction set and run them using the provided interpreter and hardware simulation.

GISC implementations