Program Execute
The PC (Program Counter) points at the next instruction to be executed, which may, depending on its opcode: load a value directly into the high bits of a register, load a value directly into the low bits of a register, load a value from an address offseted to the SP (Segment Pointer), store a value from a register to an address offseted to the SP (Segment Pointer), or perform an arithmetic operation on one or more registers potentially storing the result in another register.
| Register | Value |
|---|---|
| PC | 0000 0000 0000 0000 0000 0000 0000 0000 |
| SP | 0000 0000 0000 0000 0000 0000 0000 0000 |
| FP | 0000 0000 0000 0000 0000 0000 0000 0000 |
| R1 | 0000 0000 0000 0000 0000 0000 0000 0000 |
| R2 | 0011 0101 0111 1100 1110 0010 0110 0110 |
| R3 | 0000 0000 0000 0000 0000 0000 0000 0000 |
| R4 | 0000 0000 0000 0000 0000 0000 0000 0000 |
| R5 | 0000 0000 0000 0000 0000 0000 0000 0000 |
|
|
[0000 0000 0000 0000 0000 0000 0000 0000]
[Opcode... Reg Reg Reg Spr Spr Spr ]
[Opcode... Reg Address offset to SP ]
[Opcode... Reg Value ]
0001 Add $r1 $r2 $r3 Spare
0011 Sub $r1 $r2 $r3 Spare
0010 Div $r1 $r2 $r3 Spare
0011 Mul $r1 $r2 $r3 Spare
8 4 4 4 12
1001 LoadDH $r? $value
1010 LoadDL $r? $value
1011 Load $r? $addr (address added to SP)
1100 Store $r? $addr (address added to SP)
1101 Jmp $r? (set PC = register)
8 4 20
|
|
| Address | Value stored at address |
|---|---|
| 32 bit address | 32 bit value |
| 0x0000 0000 | 0000 1001 1010 0000 0000 0000 0000 0000 |
| 0x0000 0004 | 0000 1010 1010 0000 0000 0000 0000 0000 |
| 0x0000 0008 | 0000 1001 0010 0000 0000 0000 0001 0000 |
| 0x0000 0012 | 0000 1101 0001 0000 0000 0000 0000 0000 |
| 0x0000 0016 | 0011 0101 0111 1100 1110 0010 0110 0110 |
| 0x0000 0000 | 0000 0000 0000 0000 0000 0000 0000 0000 |
| 0x0000 0000 | 0000 0000 0000 0000 0000 0000 0000 0000 |
| 0x0000 0000 | 0000 0000 0000 0000 0000 0000 0000 0000 |
| 0x0000 0000 | 0000 0000 0000 0000 0000 0000 0000 0000 |
| 0x0000 0000 | 0000 0000 0000 0000 0000 0000 0000 0000 |
| 0x0000 0000 | 0000 0000 0000 0000 0000 0000 0000 0000 |
| 0x0000 0000 | 0000 0000 0000 0000 0000 0000 0000 0000 |
| 0x0000 0000 | 0000 0000 0000 0000 0000 0000 0000 0000 |
| 0x0000 0000 | 0000 0000 0000 0000 0000 0000 0000 0000 |
| 0x0000 0000 | 0000 0000 0000 0000 0000 0000 0000 0000 |
| 0x0000 0000 | 0000 0000 0000 0000 0000 0000 0000 0000 |
| ... | |
| 0xFFFF FFFF |
References