| Instruction [Label] : [Operation] [Rd], [Rs], [Rt], #[Imm/Dir] ;[Comment] Examples beq rg1, rg0, #16 ;Branch to address 16 if rg1 and rg0 are equal lw rg3, r0, #0 ;Load word in rg3 to the address r0+0 inc op ;Increment the Ouput Port Register   
| Feature | RISCKER |  
| # of Instructions | 30 |  
| # of Registers | 64 |  
| ALU | 16 bits |  
| Memory Architecture | Harvard |  
| Instructions Size | Fixed: 32-bits |  
| Multiplication and Division | Dedicated Hardware Units |  
| Shift Operations | Barrel Logic, Arithmetic and Rotation |  
| Addressing Modes | Immediate,Direct, Indirect,Indexed |  
| Maximum Memory Size | 65536x32bits 65536x16bits |  
| # of Branch Conditions | 2 |  
| Timers | 2x16bit |  
| Interruptions | 2 by Timer and 2 External |  
| Control Unit | HCU |  
| Similar architecture | MIPS |  
| # of Registers | Name | Index | Description |  
| 1 | r0 | 0 | Value 0 |  
| 8 | rv0-rv7 | 01:08:00 | Return Value |  
| 8 | rp0-rp7 | 09:16:00 | Subroutine Arguments |  
| 8 | rt0-rt7 | 17:24:00 | Temporary use Registers |  
| 22 | rg0-rg21 | 25-46 | General Purpose |  
| 4 | ra0-ra3 | 47-50 | Return Address |  
| 1 | sp | 51 | Stack Pointer |  
| 2 | pr1-pr2 | 52-53 | Timers Period |  
| 2 | ti1-ti2 | 54-55 | Timer Interruptions Address |  
| 2 | eir1-eir2 | 56-57 | External Interruptions Address |  
| 1 | op | 58 | Output Port |  
| 1 | rc | 59 | Control |  
| 2 | tmr1-tmr2 | 60-61 | Timer values |  
| 1 | ip | 62 | Input Port |  
| 1 | ipc | 63 | Interruption PC |  
| 64 |  |  |  |  
| Modifiable |  |  |  |  
| Special Purpose |  |  |  |  
| Read-Only |  |  |  |    Control Register   
| [0:1] | TIRST<1,2> = Timer Interrupt Reset Flag |  
| [2:3] | EIRST<1,2> = External Interrupt Reset Flag |  
| [4:5] | TIE<1,2> = Timer Interrupt Enable |  
| [6:7] | EIE<1,2> = External Interrupt Enable |  
| [8:9] | PR1<1,2> = Timer1 Prescaler |  
| [10:11] | PR2<1,2> = Timer2 Prescaler |  
| [12:13] | TMRE<1,2> = Timer Enable |  
| [14:15] | TRST<1,2> = Timer Reset |                                                           | Instructions Set
 
 
| Operation | Operands | Description |  
| R-Type |  
| add | Rd, Rs, Rt 
 Rd, Rt
 | Rd = Rs + Rt | Rd = Rd + Rt |  
| and | Rd = Rs & Rt | Rd = Rd & Rt |  
| or | Rd = Rs | Rt | Rd = Rd | Rs |  
| xor | Rd = Rs ^ Rt | Rd = Rd ^ Rs |  
| nand | Rd = ~(Rs & Rt) | Rd = ~(Rd & Rs) |  
| nor | Rd = ~(Rs | Rt) | Rd = ~(Rd | Rs) |  
| sub | Rd = Rs - Rt | Rd = Rd - Rs |  
| neg | Rd,Rs Rd
 | Rd = -Rs | Rd = -Rd |  
| inc | Rd = Rs + 1 | Rd = Rd+1 |  
| mult | Rd,Rs,Rt 
 Rd,Rt
 | Rd[15:0] = Rs[7:0] * Rt[7:0] Rd[15:0] = Rd[7:0] * Rs[7:0]
 |  
| div | Rd = {Rs[15:0] / Rt[15:0],Rs[15:0] % Rt[15:0]} Rd = {Rd[15:0] / Rs[15:0],Rd[15:0] % Rs[15:0]}
 |  
| rot | Rd, Rt, shamt 
 Rd,shamt
 | Rd = Rt rotates left by shamt | Rd = Rd rotates left by shamt |  
| sll | Rd = Rt << Shift Amount | Rd = Rd << Shift Amount |  
| srl | Rd = Rt >> Shift Amount | Rd = Rd >> Shift Amount |  
| sra | Rd = Rt>>Arithmetic by shamt | Rd = Rd>>Arithmetic by shamt |  
| I-Type |  
| addi | Rd,Rs,imm 
 Rd,imm
 | Rd = Rs + imm | Rd = Rd + imm |  
| andi | Rd = Rs & imm | Rd = Rd & imm |  
| ori | Rd = Rs | imm | Rd = Rd | imm |  
| xori | Rd = Rs ^ imm | Rd = Rd ^ imm |  
| nandi | Rd = ~(Rs & imm) | Rd = ~(Rd & imm) |  
| nori | Rd = ~(Rs | imm) | Rd = ~(Rd | imm) |  
| multi | Rd = Rs[15:0] * imm | Rd = Rd[15:0] * imm |  
| divi | Rd,Rs,imm Rd, imm
 | Rd = {Rs[15:0] / imm, Rs[15:0] % imm} Rd = {Rd[15:0] / imm, Rd[15:0] % imm}
 |  
| I-Type |  
| sw | Rd, Rs, imm Rd, imm
 | Memory[Rs+imm] = Rd Memory[Rd+imm] = Rd
 |  
| lw | Rd, Rs, imm Rd, imm
 | Rd = Memory[Rs+imm] Rd = Memory[Rd+imm]
 |  
| blt | Rd, Rs, target | ((Rd-Rs)<0) ? PC = target |  
| beq | Rd, Rs, target Rd, target
 | ((Rd-Rs)=0) ? PC = target ((Rd-Rd)=0) ? PC = target
 |  
| J-Type |  
| j | target | PC = target |  
| jrlw | Rs, Rd, imm Rd, imm
 | PC = Rs ; Rd = imm PC = Rs ; Rt0 = 0
 |  
| jal | Rd, target | Rd = PC+1; PC = target |  |