bit of organisation
This commit is contained in:
34
src/ir/instruction.c
Normal file
34
src/ir/instruction.c
Normal file
@@ -0,0 +1,34 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user