#include "instruction.h" char* gravityOpcodeToCStr(GravityOpcode opcode) { switch (opcode) { case GravityOpcodeAlloc: return "alloc"; case GravityOpcodeStore: return "store"; case GravityOpcodeLoad: return "load"; case GravityOpcodeRet: return "ret"; case GravityOpcodeJumpIf: return "jumpif"; case GravityOpcodeJump: return "jump"; case GravityOpcodeIntConst: return "iconst"; default: return "fixme"; } } char* gravityInstructionToCStr(GravityInstruction inst) { StringBuffer buff; initStringBuff(&buff); if (inst.result != NULL) { sbAppend(&buff, "%s = ", gravityValueToCStr(inst.result)); } sbAppend(&buff, "%s ", gravityOpcodeToCStr(inst.opcode)); for (unsigned int i = 0; i < inst.numOperands; i++) { if (i < inst.numOperands - 1) { sbAppend(&buff, "%s, ", gravityValueToCStr(inst.operands[i])); } else { sbAppend(&buff, "%s", gravityValueToCStr(inst.operands[i])); } } return buff.data; }