OpenCores
URL https://opencores.org/ocsvn/suslik/suslik/trunk

Subversion Repositories suslik

[/] [suslik/] [branches/] [tlb/] [arch.txt] - Diff between revs 2 and 5

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 2 Rev 5
imm is either 16 bit sign extended or full 32 bit with prefix instr(except andi1)
imm is either 16 bit sign extended or full 32 bit with prefix instr(except andi1)
there are 32 registers
there are 32 registers
alu instructions have 6-bit opcode(lowest 6 bits), shared with conditional jumps and load/store and call
alu instructions have 6-bit opcode(lowest 6 bits), shared with conditional jumps and load/store and call
2 opcodes reserved for future 64bitload&store (59 & 63)
2 opcodes reserved for future 64bitload&store (59 & 63)
not shared with in/out
not shared with in/out
no condition flags exist in this architecture so far, instead, use compare-and-jump
no condition flags exist in this architecture so far, instead, use compare-and-jump
opcode 32 is used for i/o and system instructions, using the other bits
opcode 32 is used for i/o and system instructions, using the other bits
i/o instructions have additional opcode at bits 26:21, but this can be used for system
i/o instructions have additional opcode at bits 26:21, but this can be used for system
instructions also.
instructions also.
opcode 30 prefix imm
opcode 30 prefix imm
opcode 0
opcode 0
lih reg1,imm,reg2
lih reg1,imm,reg2
lch reg1,imm,reg2 //equivalent
lch reg1,imm,reg2 //equivalent
  store imm into upper half of reg2, reg1's lower half into lower half of reg2
  store imm into upper half of reg2, reg1's lower half into lower half of reg2
opcode 1
opcode 1
li imm,reg
li imm,reg
lc imm,reg
lc imm,reg
  store imm into reg
  store imm into reg
opcode 2
opcode 2
and reg1,reg2,reg2
and reg1,reg2,reg2
  reg2=reg1®2
  reg2=reg1®2
opcode 3
opcode 3
andi reg1,imm,reg2
andi reg1,imm,reg2
  reg2=reg1&imm
  reg2=reg1&imm
opcode 4
opcode 4
or reg1,reg2,reg3
or reg1,reg2,reg3
  reg3=reg1|reg2
  reg3=reg1|reg2
opcode 5
opcode 5
ori reg1,imm,reg
ori reg1,imm,reg
reg2=reg1|imm
reg2=reg1|imm
opcode 6
opcode 6
xor reg1,reg2,reg3
xor reg1,reg2,reg3
  reg3=reg1^reg2
  reg3=reg1^reg2
opcode 7
opcode 7
xori reg1,imm,reg2
xori reg1,imm,reg2
  reg2=imm^reg1
  reg2=imm^reg1
opcode 8
opcode 8
add reg1,reg2,reg3
add reg1,reg2,reg3
  reg3=reg1+reg2
  reg3=reg1+reg2
opcode 9
opcode 9
addi reg1,imm,reg2
addi reg1,imm,reg2
  reg2=reg1+imm
  reg2=reg1+imm
opcode 10
opcode 10
sub reg1,reg2,reg3
sub reg1,reg2,reg3
  reg3=reg1-reg2
  reg3=reg1-reg2
opcode 11
opcode 11
subi reg1,imm,reg2
subi reg1,imm,reg2
  reg2=reg1-imm
  reg2=reg1-imm
opcode 12
opcode 12
nop
nop
  no operation
  no operation
opcode 13
opcode 13
andi1 reg1,imm,reg2
andi1 reg1,imm,reg2
  reg2=reg1 & imm(one extended)
  reg2=reg1 & imm(one extended)
shl reg1,reg2,reg3
shl reg1,reg2,reg3
shli reg1,imm,reg2
shli reg1,imm,reg2
shr reg1,reg2,
shr reg1,reg2,
reg3
reg3
shri reg1,imm,reg2
shri reg1,imm,reg2
sar reg1,reg2,reg3
sar reg1,reg2,reg3
sari reg1,imm,reg2
sari reg1,imm,reg2
inb r1,r2
inb r1,r2
inw r1,r2
inw r1,r2
inl r1,r2
inl r1,r2
outb r1,r2
outb r1,r2
outw r1,r2
outw r1,r2
outl r1,r2
outl r1,r2
conditional jumps
conditional jumps
cjule r1,r2, label
cjule r1,r2, label
cjc r1,r2, label
cjc r1,r2, label
cjugt r1,r2, label
cjugt r1,r2, label
cjnc r1,r2, label
cjnc r1,r2, label
cjeq r1,r2, label
cjeq r1,r2, label
cjne r1,r2, label
cjne r1,r2, label
cjult r1,r2, label
cjult r1,r2, label
cjuge r1,r2, label
cjuge r1,r2, label
cjn r1,r2, label
cjn r1,r2, label
cjnn r1,r2, label
cjnn r1,r2, label
cjslt r1,r2, label
cjslt r1,r2, label
cjsge r1,r2, label
cjsge r1,r2, label
cjsle r1,r2, label
cjsle r1,r2, label
cjsgt r1,r2, label
cjsgt r1,r2, label
cjo r1,r2, label
cjo r1,r2, label
cjno r1,r2, label
cjno r1,r2, label
call r1,imm,r2
call r1,imm,r2
  call (r1+imm) return addr=r2
  call (r1+imm) return addr=r2
ret r1
ret r1
ldl r1,imm/label,r2
ldl r1,imm/label,r2
ldw r1,imm/label,r2
ldw r1,imm/label,r2
ldb r1,imm/label,r2
ldb r1,imm/label,r2
stl r1,imm/label,r2
stl r1,imm/label,r2
stw r1,imm/label,r2
stw r1,imm/label,r2
stb r1,imm/label,r2
stb r1,imm/label,r2
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.