|
@@ -110,7 +110,7 @@ pub enum OpCode {
|
|
|
GE(Register, Register, Register),
|
|
|
|
|
|
// Branching Operations
|
|
|
- /// JLABEL <address>
|
|
|
+ /// LABEL <address>
|
|
|
/// Adds a label to the this part of the code
|
|
|
LABEL(Addr),
|
|
|
|
|
@@ -144,35 +144,35 @@ pub enum OpCode {
|
|
|
impl ToString for OpCode {
|
|
|
fn to_string(&self) -> String {
|
|
|
match self {
|
|
|
- OpCode::LOAD(r, v) => format!("LOAD {} {:?}", r, v),
|
|
|
- OpCode::LOAD_EXTERNAL(r, v) => format!("LOAD_EXTERNAL {} {:?}", r, v),
|
|
|
- OpCode::CPY(r1, r2) => format!("CPY {} {}", r1, r2),
|
|
|
- OpCode::MOV(r1, r2) => format!("MOV {} {}", r1, r2),
|
|
|
- OpCode::ADD(r1, r2, r3) => format!("ADD {} {} {}", r1, r2, r3),
|
|
|
- OpCode::SUB(r1, r2, r3) => format!("SUB {} {} {}", r1, r2, r3),
|
|
|
- OpCode::MUL(r1, r2, r3) => format!("MUL {} {} {}", r1, r2, r3),
|
|
|
- OpCode::DIV(r1, r2, r3) => format!("DIV {} {} {}", r1, r2, r3),
|
|
|
- OpCode::MOD(r1, r2, r3) => format!("MOD {} {} {}", r1, r2, r3),
|
|
|
- OpCode::NEG(r1, r2) => format!("NEG {} {}", r1, r2),
|
|
|
- OpCode::AND(r1, r2, r3) => format!("AND {} {} {}", r1, r2, r3),
|
|
|
- OpCode::OR(r1, r2, r3) => format!("OR {} {} {}", r1, r2, r3),
|
|
|
- OpCode::XOR(r1, r2, r3) => format!("XOR {} {} {}", r1, r2, r3),
|
|
|
- OpCode::NOT(r1, r2) => format!("NOT {} {}", r1, r2),
|
|
|
- OpCode::SHL(r1, r2, v) => format!("SHL {} {} {:?}", r1, r2, v),
|
|
|
- OpCode::SHR(r1, r2, v) => format!("SHR {} {} {:?}", r1, r2, v),
|
|
|
- OpCode::EQ(r1, r2, r3) => format!("EQ {} {} {}", r1, r2, r3),
|
|
|
- OpCode::NE(r1, r2, r3) => format!("NE {} {} {}", r1, r2, r3),
|
|
|
- OpCode::LT(r1, r2, r3) => format!("LT {} {} {}", r1, r2, r3),
|
|
|
- OpCode::LE(r1, r2, r3) => format!("LE {} {} {}", r1, r2, r3),
|
|
|
- OpCode::GT(r1, r2, r3) => format!("GT {} {} {}", r1, r2, r3),
|
|
|
- OpCode::GE(r1, r2, r3) => format!("GE {} {} {}", r1, r2, r3),
|
|
|
- OpCode::LABEL(a) => format!("LABEL {}:", a),
|
|
|
- OpCode::JMP(a) => format!("JMP {}", a),
|
|
|
- OpCode::JEQ(r, a) => format!("JEQ {} {}", r, a),
|
|
|
- OpCode::JNE(r, a) => format!("JNE {} {}", r, a),
|
|
|
- OpCode::PUSH(r) => format!("PUSH {}", r),
|
|
|
- OpCode::POP(r) => format!("POP {}", r),
|
|
|
- OpCode::HLT(r) => format!("HLT {}", r),
|
|
|
+ OpCode::LOAD(r, v) => format!("LOAD {:?} {:?}", r, v),
|
|
|
+ OpCode::LOAD_EXTERNAL(r, v) => format!("LOAD_EXTERNAL {:?} {:?}", r, v),
|
|
|
+ OpCode::CPY(r1, r2) => format!("CPY {:?} {:?}", r1, r2),
|
|
|
+ OpCode::MOV(r1, r2) => format!("MOV {:?} {:?}", r1, r2),
|
|
|
+ OpCode::ADD(r1, r2, r3) => format!("ADD {:?} {:?} {:?}", r1, r2, r3),
|
|
|
+ OpCode::SUB(r1, r2, r3) => format!("SUB {:?} {:?} {:?}", r1, r2, r3),
|
|
|
+ OpCode::MUL(r1, r2, r3) => format!("MUL {:?} {:?} {:?}", r1, r2, r3),
|
|
|
+ OpCode::DIV(r1, r2, r3) => format!("DIV {:?} {:?} {:?}", r1, r2, r3),
|
|
|
+ OpCode::MOD(r1, r2, r3) => format!("MOD {:?} {:?} {:?}", r1, r2, r3),
|
|
|
+ OpCode::NEG(r1, r2) => format!("NEG {:?} {:?}", r1, r2),
|
|
|
+ OpCode::AND(r1, r2, r3) => format!("AND {:?} {:?} {:?}", r1, r2, r3),
|
|
|
+ OpCode::OR(r1, r2, r3) => format!("OR {:?} {:?} {:?}", r1, r2, r3),
|
|
|
+ OpCode::XOR(r1, r2, r3) => format!("XOR {:?} {:?} {:?}", r1, r2, r3),
|
|
|
+ OpCode::NOT(r1, r2) => format!("NOT {:?} {:?}", r1, r2),
|
|
|
+ OpCode::SHL(r1, r2, v) => format!("SHL {:?} {:?} {:?}", r1, r2, v),
|
|
|
+ OpCode::SHR(r1, r2, v) => format!("SHR {:?} {:?} {:?}", r1, r2, v),
|
|
|
+ OpCode::EQ(r1, r2, r3) => format!("EQ {:?} {:?} {:?}", r1, r2, r3),
|
|
|
+ OpCode::NE(r1, r2, r3) => format!("NE {:?} {:?} {:?}", r1, r2, r3),
|
|
|
+ OpCode::LT(r1, r2, r3) => format!("LT {:?} {:?} {:?}", r1, r2, r3),
|
|
|
+ OpCode::LE(r1, r2, r3) => format!("LE {:?} {:?} {:?}", r1, r2, r3),
|
|
|
+ OpCode::GT(r1, r2, r3) => format!("GT {:?} {:?} {:?}", r1, r2, r3),
|
|
|
+ OpCode::GE(r1, r2, r3) => format!("GE {:?} {:?} {:?}", r1, r2, r3),
|
|
|
+ OpCode::LABEL(a) => format!("LABEL {:?}:", a),
|
|
|
+ OpCode::JMP(a) => format!("JMP {:?}", a),
|
|
|
+ OpCode::JEQ(r, a) => format!("JEQ {:?} {:?}", r, a),
|
|
|
+ OpCode::JNE(r, a) => format!("JNE {:?} {:?}", r, a),
|
|
|
+ OpCode::PUSH(r) => format!("PUSH {:?}", r),
|
|
|
+ OpCode::POP(r) => format!("POP {:?}", r),
|
|
|
+ OpCode::HLT(r) => format!("HLT {:?}", r),
|
|
|
}
|
|
|
}
|
|
|
}
|