From 28dc1743c92bc5cc22d5f390dd9dd3598fa82976 Mon Sep 17 00:00:00 2001 From: chad Date: Fri, 26 Sep 2014 07:21:54 -0400 Subject: [PATCH] Implemented unimplemented instructions. --- src/instruction.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/instruction.cpp b/src/instruction.cpp index 61ec008e..ba756d66 100644 --- a/src/instruction.cpp +++ b/src/instruction.cpp @@ -170,6 +170,10 @@ void Instruction::executeOn(Core &c) { break; case AND: reg[rdest] = reg[rsrc[0]] & reg[rsrc[1]]; 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]]; reg[rdest].trunc(wordSz); break; @@ -238,6 +242,10 @@ void Instruction::executeOn(Core &c) { break; case NOTP: pReg[pdest] = !(pReg[psrc[0]]); 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]]; break; case HALT: c.activeThreads = 0;