package org.rascalmpl.library.experiments.Compiler.RVM.Interpreter.Instructions;
import org.rascalmpl.library.experiments.Compiler.RVM.Interpreter.BytecodeGenerator;
import org.rascalmpl.library.experiments.Compiler.RVM.Interpreter.CodeBlock;
public abstract class Instruction {
protected Opcode opcode;
protected CodeBlock codeblock;
Instruction(CodeBlock cb, Opcode opc){
this.opcode = opc;
this.codeblock = cb;
}
public int pcIncrement() {
return opcode.getPcIncrement();
}
public String toString(){
return opcode.toString();
}
public void generate(){
codeblock.addCode0(opcode.getOpcode());
}
public void generateByteCode(BytecodeGenerator codeEmittor, boolean dcode){
codeEmittor.emitDebugCall(opcode.name());
}
}