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",
    25  	},
    26  	reg0:        "R0",
    27  	regTmp:      "R23",
    28  	regCarry:    "R24",
    29  	regAltCarry: "R25",
    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