Boolean stack implementation #18
@@ -391,6 +391,73 @@ contract Push3Interpreter {
|
|||||||
}
|
}
|
||||||
else if (uint8(op) <= OPCODE_LAST) {
|
else if (uint8(op) <= OPCODE_LAST) {
|
||||||
// BOOL OPCODES
|
// BOOL OPCODES
|
||||||
|
if (op == OpCode.BOOL_DUP) {
|
||||||
|
// dup top
|
||||||
|
if (boolTop >= 1) {
|
||||||
|
bool a = boolStack[boolTop - 1];
|
||||||
|
boolStack[boolTop] = a;
|
||||||
|
boolTop++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (op == OpCode.BOOL_POP) {
|
||||||
|
// pop top
|
||||||
|
if (boolTop >= 1) {
|
||||||
|
boolTop -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (op == OpCode.BOOL_SWAP) {
|
||||||
|
// swap top 2
|
||||||
|
if (boolTop >= 2) {
|
||||||
|
bool a = boolStack[boolTop - 1];
|
||||||
|
boolStack[boolTop - 1] = boolStack[boolTop - 2];
|
||||||
|
boolStack[boolTop - 2] = a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (op == OpCode.BOOL_FLUSH) {
|
||||||
|
// empty stack
|
||||||
|
boolTop = 0;
|
||||||
|
}
|
||||||
|
else if (op == OpCode.BOOL_STACKDEPTH) {
|
||||||
|
// push bool depth onto int stack
|
||||||
|
intStack[intTop] = boolTop;
|
||||||
|
intTop++;
|
||||||
|
}
|
||||||
|
else if (op == OpCode.BOOL_NOT) {
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (op == OpCode.BOOL_AND) {
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (op == OpCode.BOOL_OR) {
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (op == OpCode.BOOL_EQ) {
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (op == OpCode.BOOL_FROMFLOAT) {
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (op == OpCode.BOOL_FROMINTEGER) {
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (op == OpCode.BOOL_ROT) {
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (op == OpCode.BOOL_SHOVE) {
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (op == OpCode.BOOL_YANK) {
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (op == OpCode.BOOL_YANKDUP) {
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (op == OpCode.BOOL_DEFINE) {
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (op == OpCode.BOOL_RAND) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (tag == CodeTag.INT_LITERAL) {
|
else if (tag == CodeTag.INT_LITERAL) {
|
||||||
|
|||||||
Reference in New Issue
Block a user