Implemented unimplemented instructions.
This commit is contained in:
@@ -170,6 +170,10 @@ void Instruction::executeOn(Core &c) {
|
|||||||
break;
|
break;
|
||||||
case AND: reg[rdest] = reg[rsrc[0]] & reg[rsrc[1]];
|
case AND: reg[rdest] = reg[rsrc[0]] & reg[rsrc[1]];
|
||||||
break;
|
break;
|
||||||
|
case OR: reg[rdest] = reg[rsrc[0]] | reg[rsrc[1]];
|
||||||
|
break;
|
||||||
|
case XOR: reg[rdest] = reg[rsrc[0]] ^ reg[rsrc[1]];
|
||||||
|
break;
|
||||||
case NEG: reg[rdest] = -(Word_s)reg[rsrc[0]];
|
case NEG: reg[rdest] = -(Word_s)reg[rsrc[0]];
|
||||||
reg[rdest].trunc(wordSz);
|
reg[rdest].trunc(wordSz);
|
||||||
break;
|
break;
|
||||||
@@ -238,6 +242,10 @@ void Instruction::executeOn(Core &c) {
|
|||||||
break;
|
break;
|
||||||
case NOTP: pReg[pdest] = !(pReg[psrc[0]]);
|
case NOTP: pReg[pdest] = !(pReg[psrc[0]]);
|
||||||
break;
|
break;
|
||||||
|
case ANDP: pReg[pdest] = pReg[psrc[0]] & pReg[psrc[1]];
|
||||||
|
break;
|
||||||
|
case ORP: pReg[pdest] = pReg[psrc[0]] | pReg[psrc[1]];
|
||||||
|
break;
|
||||||
case ISNEG: pReg[pdest] = (1ll<<(wordSz*8 - 1))®[rsrc[0]];
|
case ISNEG: pReg[pdest] = (1ll<<(wordSz*8 - 1))®[rsrc[0]];
|
||||||
break;
|
break;
|
||||||
case HALT: c.activeThreads = 0;
|
case HALT: c.activeThreads = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user