Virtual CPU Instruction Set

Z ZděchovNET
Skočit na navigaci Skočit na vyhledávání

Design goals

  • Simple to implement in other programming languages
  • Efficient to execute by emulator
  • Future extensibility (to support 128-bit data/address width or more)
  • Single instruction code for any data/address width
  • Register based load-store architecture rather than stack based machine or accumulator based machine

Other interesting instruction sets

CPU Instruction count Instruction size [bits] Data size [bits] Addressable memory [bits] Registers
Tiny CPU Instruction Set 22 8-16 8 10 PC, SP, A, X, SR
A Quick Introduction to the ZipCPU Instruction Set 29 32 32 32 R0-R13, PC, CC
MINI-CPU Instruction Set Specification 12 4-12 8 8 PC, ACC, R
Simple Virtual Machine 18 8 32 32 PC, SP, FP
Simple virtual machine which interprets bytecode. 36 16-32 16-32 16-32 IP, FLAGS, R0-R9, SP
VAM Virtual Assembler Machine 58 16-32 16-32 16-32 R0-Rn (IP, SP)
Simple 8-bit Assembler Simulator 60 8 8 8 PC, SP, A, B, C, D
The RiSC-16 Instruction-Set Architecture 8 16 16 16 PC, R0-R7
TOY Machine 16 16 16 8 (256 words) PC, R0-R15
MU0 8 16 16 12 PC, ACC
LC-3 15 16 16 16 PC, R0-R7
TOY/2 - a minimalist 16 bit CPU 15 16 16 16 PC, A, T
MARIE: An Introduction to a Simple Computer 9 16 16 12 PC, ACC
Building a 4-Bit Computer: The Instruction Set 16 4 4 12 R0-R5, S0, S1, PC, SP, IX, IV, TA
How to create your own virtual machine 35 8 8 16 A, B, X, Y, D
Little Man Computer 10 12 8 8 A
CRISC 32 struct 64 16-64
CHIP-8 35 16 8 12 V0-V15, I
Toy CPU 14 8 8 8 A
8bit virtual machine 28 8 8 8 PC, A, X

Instruction parameters styles

Types of architectures:

  • Direct - An address to memory is used as a parameter.
  • Accumulator - Accumulator based architecture which has special register called accumulator to hold value for operations. There can be more special registers in addition to accumulator.
  • Registers - Uses multiple general-purpose registers to hold value for operations.
  • Stack - Parameters and results for operations are kept on top of the stack.
Instruction Meaning Direct Accumulator Registers Stack
SET Set value n to address x SET (x), n LOAD A, n LOAD Rx, n PUSH n
COPY Copy value from address y to address x COPY (x), (y) LOAD A, (y)

STORE (x), A

LOAD Rx, (y)

STORE (x), Rx

PUSH (y)

POP (x)

COPY Copy value from address loaded from address y to address x COPY (x), ((y)) LOAD A, (y)

LOAD A, (A)
STORE (x), A

LOAD Rx, (y)

LOAD Rx, (Rx)
STORE (x), Rx

PUSH ((y))

POP (x)

INC Increment value at address x INC (x) LOAD A, (x)

INC A
STORE (x), A

LOAD Rx, (x)

INC Rx
STORE (x), Rx

PUSH (x)

INC
POP (x)

ADD Sum value at address x with value at address y and store to address x ADD (x), (y) LOAD A, (x)

ADD A, (y)
STORE (x), A

LOAD Rx, (x)

LOAD Ry, (y)
ADD Rx, Ry
STORE (x), Rx

PUSH (x)

PUSH (y) ADD
POP (x)

ADD Sum value at address y with value at address z and store to address x ADD (x), (y), (z) LOAD A, (y)

ADD A, (z)
STORE (x), A

LOAD Rx, (y)

LOAD Ry, (z)
ADD Rx, Ry
STORE (x), Rx

PUSH (y)

PUSH (z) ADD
POP (x)

External links