AbacusInstr Type
Abacus is a typical RISC architecture; the following data type specifies however only the scalar part of the instructions, while there are also vector instructions. See also Abacus reference card. For addition, subtraction, multiplication, division there are four variants:
- AbcOp(rd,r1,r2) means signed operation Reg[rd] := Reg[r1] op Reg[r2]
- AbcOpU(rd,r1,r2) means unsigned operation Reg[rd] := Reg[r1] op Reg[r2]
- AbcOpI(rd,r1,c) means signed operation Reg[rd] := Reg[r1] op c
- AbcOpIU(rd,r1,c) means unsigned operation Reg[rd] := Reg[r1] op c
- AbcAnd(rd,r1,r2) means bitwise Reg[rd] := Reg[r1] & Reg[r2]
- AbcOr(rd,r1,r2) means bitwise Reg[rd] := Reg[r1] | Reg[r2]
- AbcXor(rd,r1,r2) means bitwise Reg[rd] := Reg[r1] ^ Reg[r2]
- AbcNeg(rd,r1) means bitwise Reg[rd] := !Reg[r1]
- AbcShift(rd,r1,r2) means left shift of Reg[r1] by Reg[r2] bits to Reg[rd]
- AbcSlt(rd,r1,r2) means signed operation Reg[rd] := Reg[r1] < Reg[r2]
- AbcSltU(rd,r1,r2) means unsigned operation Reg[rd] := Reg[r1] < Reg[r2]
- AbcSlet(rd,r1,r2) means signed operation Reg[rd] := Reg[r1] <= Reg[r2]
- AbcSletU(rd,r1,r2) means unsigned operation Reg[rd] := Reg[r1] <= Reg[r2]
- AbcSeq(rd,r1,r2) means equality Reg[rd] := Reg[r1] == Reg[r2]
- AbcSne(rd,r1,r2) means negated equality Reg[rd] := Reg[r1] != Reg[r2]
- AbcMove(rd,c) means Reg[rd] := bv2int(c)
- AbcOvf(rd) means Reg[rd] := ovflw
- AbcLoad(rd,r1,r2) means Reg[rd] := Mem[Reg[r1] + Reg[r2]]
- AbcLoadI(rd,r1,c) means Reg[rd] := Mem[Reg[r1] + bv2nat(c)]
- AbcStore(rd,r1,r2) means Mem[Reg[r1] + Reg[r2]] := Reg[rd]
- AbcStoreI(rd,r1,c) means Mem[Reg[r1] + bv2nat(c)] := Reg[rd]
- AbcBez(rd,c) means if(Reg[rd]==0) pc := pc + bv2int(c)
- AbcBnz(rd,c) means if(Reg[rd]!=0) pc := pc + bv2int(c)
- AbcJmp(rd) means pc := pc + Reg[rd]
- AbcLdLink(rd,r1,c) means Reg[rd] := Mem[Reg[r1] + bv2nat(c)]
- AbcStCond(rd,r1,r2) means Mem[Reg[r1] + Reg[r2]] := Reg[rd]
- AbcSync waits until the store buffer is emptied
Union cases
Union case | Description |
|
|
|
|
|
|
Full Usage:
AbcSync
|
|
Instance members
Instance member | Description |
Full Usage:
this.IsAbcAdd
Returns: bool
|
|
Full Usage:
this.IsAbcAddI
Returns: bool
|
|
Full Usage:
this.IsAbcAddIU
Returns: bool
|
|
Full Usage:
this.IsAbcAddU
Returns: bool
|
|
Full Usage:
this.IsAbcAnd
Returns: bool
|
|
Full Usage:
this.IsAbcBez
Returns: bool
|
|
Full Usage:
this.IsAbcBnz
Returns: bool
|
|
Full Usage:
this.IsAbcDiv
Returns: bool
|
|
Full Usage:
this.IsAbcDivI
Returns: bool
|
|
Full Usage:
this.IsAbcDivIU
Returns: bool
|
|
Full Usage:
this.IsAbcDivU
Returns: bool
|
|
Full Usage:
this.IsAbcJ
Returns: bool
|
|
Full Usage:
this.IsAbcJmp
Returns: bool
|
|
Full Usage:
this.IsAbcLdLink
Returns: bool
|
|
Full Usage:
this.IsAbcLoad
Returns: bool
|
|
Full Usage:
this.IsAbcLoadI
Returns: bool
|
|
Full Usage:
this.IsAbcMove
Returns: bool
|
|
Full Usage:
this.IsAbcMul
Returns: bool
|
|
Full Usage:
this.IsAbcMulI
Returns: bool
|
|
Full Usage:
this.IsAbcMulIU
Returns: bool
|
|
Full Usage:
this.IsAbcMulU
Returns: bool
|
|
Full Usage:
this.IsAbcNeg
Returns: bool
|
|
Full Usage:
this.IsAbcOr
Returns: bool
|
|
Full Usage:
this.IsAbcOvf
Returns: bool
|
|
Full Usage:
this.IsAbcSeq
Returns: bool
|
|
Full Usage:
this.IsAbcShift
Returns: bool
|
|
Full Usage:
this.IsAbcSle
Returns: bool
|
|
Full Usage:
this.IsAbcSleU
Returns: bool
|
|
Full Usage:
this.IsAbcSlt
Returns: bool
|
|
Full Usage:
this.IsAbcSltU
Returns: bool
|
|
Full Usage:
this.IsAbcSne
Returns: bool
|
|
Full Usage:
this.IsAbcStCond
Returns: bool
|
|
Full Usage:
this.IsAbcStore
Returns: bool
|
|
Full Usage:
this.IsAbcStoreI
Returns: bool
|
|
Full Usage:
this.IsAbcSub
Returns: bool
|
|
Full Usage:
this.IsAbcSubI
Returns: bool
|
|
Full Usage:
this.IsAbcSubIU
Returns: bool
|
|
Full Usage:
this.IsAbcSubU
Returns: bool
|
|
Full Usage:
this.IsAbcSync
Returns: bool
|
|
Full Usage:
this.IsAbcXor
Returns: bool
|
|