1
2
3
4
5 package asmgen
6
7 var ArchMIPS = &Arch{
8 Name: "mipsx",
9 Build: "mips || mipsle",
10 WordBits: 32,
11 WordBytes: 4,
12 CarrySafeLoop: true,
13
14 regs: []string{
15
16
17
18
19
20
21
22 "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9",
23 "R10", "R11", "R12", "R13", "R14", "R15", "R16", "R17", "R18", "R19",
24 "R20", "R21", "R22", "R24", "R25", "R26", "R27",
25 },
26 reg0: "R0",
27 regTmp: "R23",
28 regCarry: "R26",
29 regAltCarry: "R27",
30
31 mov: "MOVW",
32 add: "ADDU",
33 sltu: "SGTU",
34 sub: "SUBU",
35 mulWideF: mipsMulWide,
36 lsh: "SLL",
37 rsh: "SRL",
38 and: "AND",
39 or: "OR",
40 xor: "XOR",
41
42 jmpZero: "BEQ %s, %s",
43 jmpNonZero: "BNE %s, %s",
44 }
45
46 func mipsMulWide(a *Asm, src1, src2, dstlo, dsthi Reg) {
47 a.Printf("\tMULU %s, %s\n\tMOVW LO, %s\n\tMOVW HI, %s\n", src1, src2, dstlo, dsthi)
48 }
49
View as plain text