Improves pseudo MIPS

This commit is contained in:
jvoisin 2015-01-16 01:23:32 +01:00
parent ce9ece1177
commit 8530822050

View File

@ -16,46 +16,57 @@ static int replace(int argc, const char *argv[], char *newstr) {
char *op;
char *str;
} ops[] = {
{ "li", "1 = 2"},
{ "lui", "1 |= 2:"}, // : = <<16
{ "jr", "ret 1"},
{ "bne", "if (1 != 2) goto 3"},
{ "beq", "if (1 == 2) goto 3"},
{ "beqz", "if (!1) goto 2"},
{ "bnez", "if (1) goto 2"},
{ "begz", "if (1 >= 0) goto 2"},
{ "begzal", "if (1 >= 0) call 2"},
{ "bgtz", "if (1 > 0) goto 2"},
{ "bltz", "if (1 < 0) goto 2"},
{ "bltzal", "if (1 < 0) call 2"},
{ "negu", "1 = !2"},
{ "and", "1 = 2 & 3"},
{ "andi", "1 = 2 & 3"},
{ "ori", "1 = 2 | 3"},
{ "subu", "1 = 2 - 3"},
{ "xor", "1 = 2 ^ 3"},
{ "xori", "1 = 2 ^ 3"},
{ "addi", "1 = 2 + 3"},
{ "addiu", "1 = 2 + 3"},
{ "addu", "1 = 2 + 3"},
//{ "jal", "call 1"},
{ "bal", "call 1"},
{ "jalr", "call 1"},
{ "and", "1 = 2 & 3"},
{ "andi", "1 = 2 & 3"},
{ "b", "goto 1"},
{ "bal", "call 1"},
{ "begz", "if (1 >= 0) goto 2"},
{ "begzal", "if (1 >= 0) call 2"},
{ "beq", "if (1 == 2) goto 3"},
{ "beqz", "if (!1) goto 2"},
{ "bgtz", "if (1 > 0) goto 2"},
{ "bltz", "if (1 < 0) goto 2"},
{ "bltzal", "if (1 < 0) call 2"},
{ "bne", "if (1 != 2) goto 3"},
{ "bnez", "if (1) goto 2"},
{ "j", "call 1"},
{ "jal", "call 1"},
{ "jalr", "call 1"},
{ "jr", "ret 1"},
{ "lb", "1 = byte [3 + 2]"},
{ "lbu", "1 = byte [3 + 2]"},
{ "lw", "1 = halfword [3 + 2]"},
{ "li", "1 = 2"},
{ "lui", "1 |= 2 << 16"},
{ "lw", "1 = [3 + 2]"},
{ "move", "1 = 2"},
{ "mult", "1 = 2 * 3"},
{ "multu", "1 = 2 * 3"},
{ "negu", "1 = !2"},
{ "nop", ""},
{ "nor", "1 = ~(2 | 3)"},
{ "or", "1 = 2 | 3"},
{ "ori", "1 = 2 | 3"},
{ "sb", "byte [3 + 2] = 1"},
{ "sh", "halfword [3 + 2] = 1"},
{ "sll", "1 = 2 << 3"},
{ "sllv", "1 = 2 << 3"},
{ "slr", "1 = 2 >> 3"}, // logic
{ "sra", "1 = 2 >> 3"}, // arithmetic
{ "slt", "1 = (2 < 3)"},
{ "slti", "1 = (2 < 3)"},
{ "sltiu", "1 = (2 < 3)"},
{ "sltu", "1 = unsigned (2 < 3)"},
{ "lb", "1 = byte [3 + 2]"},
{ "lw", "1 = [3 + 2]"},
{ "sb", "byte [3 + 2] = 1"},
{ "lbu", "1 = byte [3 + 2]"},
{ "sra", "1 = 2 >> 3"}, // arithmetic
{ "srl", "1 = 2 >> 3"},
{ "srlv", "1 = 2 >> 3"},
{ "subu", "1 = 2 - 3"},
{ "sub", "1 = 2 - 3"},
{ "sw", "[3 + 2] = 1"},
{ "xor", "1 = 2 ^ 3"},
{ "xori", "1 = 2 ^ 3"},
{ NULL }
};