diff options
Diffstat (limited to 'syntax')
-rw-r--r-- | syntax/mips.vim | 249 |
1 files changed, 249 insertions, 0 deletions
diff --git a/syntax/mips.vim b/syntax/mips.vim new file mode 100644 index 0000000..e8d81b5 --- /dev/null +++ b/syntax/mips.vim @@ -0,0 +1,249 @@ +" Vim syntax file +" Language: MIPS +" Maintainer: Alex Brick <alex@alexrbrick.com> +" Last Change: 2007 Oct 18 + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +setlocal iskeyword+=- +syntax case match + +syntax match mipsComment /#.*/ +syntax match mipsNumber /\<[-]\?\d\+\>/ " Decimal numbers +syntax match mipsNumber /\<-\?0\(x\|X\)\d\+\>/ " Hex numbers +syntax region mipsString start=/"/ skip=/\\"/ end=/"/ +syntax match mipsLabelColon /:/ contained +syntax match mipsLabel /\w\+:/ contains=mipsLabelColon + +" Registers +syntax match mipsRegister "\$zero" +syntax match mipsRegister "\$v0" +syntax match mipsRegister "\$v1" +syntax match mipsRegister "\$a0" +syntax match mipsRegister "\$a1" +syntax match mipsRegister "\$a2" +syntax match mipsRegister "\$a3" +syntax match mipsRegister "\$t0" +syntax match mipsRegister "\$t1" +syntax match mipsRegister "\$t2" +syntax match mipsRegister "\$t3" +syntax match mipsRegister "\$t4" +syntax match mipsRegister "\$t5" +syntax match mipsRegister "\$t6" +syntax match mipsRegister "\$t7" +syntax match mipsRegister "\$t8" +syntax match mipsRegister "\$t9" +syntax match mipsRegister "\$s0" +syntax match mipsRegister "\$s1" +syntax match mipsRegister "\$s2" +syntax match mipsRegister "\$s3" +syntax match mipsRegister "\$s4" +syntax match mipsRegister "\$s5" +syntax match mipsRegister "\$s6" +syntax match mipsRegister "\$s7" +syntax match mipsRegister "\$k0" +syntax match mipsRegister "\$k1" +syntax match mipsRegister "\$gp" +syntax match mipsRegister "\$sp" +syntax match mipsRegister "\$fp" +syntax match mipsRegister "\$ra" + +for i in range(0, 31) + " This is for the regular registers + execute 'syntax match mipsRegister "\$' . i . '\(\d\+\)\@!"' + " And this is for the FP registers + execute 'syntax match mipsRegister "\$f' . i . '\(\d\+\)\@!"' +endfor + +" Directives +syntax match mipsDirective "\.2byte" +syntax match mipsDirective "\.4byte" +syntax match mipsDirective "\.8byte" +syntax match mipsDirective "\.aent" +syntax match mipsDirective "\.align" +syntax match mipsDirective "\.aascii" +syntax match mipsDirective "\.asciiz" +syntax match mipsDirective "\.byte" +syntax match mipsDirective "\.comm" +syntax match mipsDirective "\.cpadd" +syntax match mipsDirective "\.cpload" +syntax match mipsDirective "\.cplocal" +syntax match mipsDirective "\.cprestore" +syntax match mipsDirective "\.cpreturn" +syntax match mipsDirective "\.cpsetup" +syntax match mipsDirective "\.data" +syntax match mipsDirective "\.double" +syntax match mipsDirective "\.dword" +syntax match mipsDirective "\.dynsym" +syntax match mipsDirective "\.end" +syntax match mipsDirective "\.endr" +syntax match mipsDirective "\.ent" +syntax match mipsDirective "\.extern" +syntax match mipsDirective "\.file" +syntax match mipsDirective "\.float" +syntax match mipsDirective "\.fmask" +syntax match mipsDirective "\.frame" +syntax match mipsDirective "\.globl" +syntax match mipsDirective "\.gpvalue" +syntax match mipsDirective "\.gpword" +syntax match mipsDirective "\.half" +syntax match mipsDirective "\.kdata" +syntax match mipsDirective "\.ktext" +syntax match mipsDirective "\.lab" +syntax match mipsDirective "\.lcomm" +syntax match mipsDirective "\.loc" +syntax match mipsDirective "\.mask" +syntax match mipsDirective "\.nada" +syntax match mipsDirective "\.nop" +syntax match mipsDirective "\.option" +syntax match mipsDirective "\.origin" +syntax match mipsDirective "\.repeat" +syntax match mipsDirective "\.rdata" +syntax match mipsDirective "\.sdata" +syntax match mipsDirective "\.section" +syntax match mipsDirective "\.set" +syntax match mipsDirective "\.size" +syntax match mipsDirective "\.space" +syntax match mipsDirective "\.struct" +syntax match mipsDirective "\.text" +syntax match mipsDirective "\.type" +syntax match mipsDirective "\.verstamp" +syntax match mipsDirective "\.weakext" +syntax match mipsDirective "\.word" + +" Arithmetic and Logical Instructions +syntax keyword mipsInstruction abs +syntax keyword mipsInstruction add addu addi addiu +syntax keyword mipsInstruction and andi +syntax keyword mipsInstruction clo clz +syntax keyword mipsInstruction div divu +syntax keyword mipsInstruction mult multu mul mulo mulou madd maddu msub msubu +syntax keyword mipsInstruction neg negu +syntax keyword mipsInstruction nor +syntax keyword mipsInstruction not +syntax keyword mipsInstruction or ori +syntax keyword mipsInstruction rem remu +syntax keyword mipsInstruction sll sllv sra srav srl srlv +syntax keyword mipsInstruction rol ror +syntax keyword mipsInstruction sub subu +syntax keyword mipsInstruction xor xori + +" Constant-Manipulating Instructions +syntax keyword mipsInstruction lui li +syntax keyword mipsInstruction slt sltu slti sltiu +syntax keyword mipsInstruction seq +syntax keyword mipsInstruction sge sgeu +syntax keyword mipsInstruction sgt sgtu +syntax keyword mipsInstruction sle sleu +syntax keyword mipsInstruction sne + +" Branch Instructions +syntax keyword mipsInstruction b +syntax keyword mipsInstruction bc1f bc1t +syntax keyword mipsInstruction beq beqz +syntax keyword mipsInstruction bgez bgezal bgtz +syntax keyword mipsInstruction blez bltzal bltz +syntax keyword mipsInstruction bne bnez +syntax keyword mipsInstruction bge bgeu +syntax keyword mipsInstruction bgt bgtu +syntax keyword mipsInstruction ble bleu +syntax keyword mipsInstruction blt bltu + +" Jump Instructions +syntax keyword mipsInstruction j jal jalr jr + +" Trap Instructions +syntax keyword mipsInstruction teq teqi +syntax keyword mipsInstruction tne tnei +syntax keyword mipsInstruction tge tgeu tgei tgeiu +syntax keyword mipsInstruction tlt tltu tlti tltiu + +" Load Instructions +syntax keyword mipsInstruction la +syntax keyword mipsInstruction lb lbu lh lhu +syntax keyword mipsInstruction lw lwc1 lwl lwr +syntax keyword mipsInstruction ld +syntax keyword mipsInstruction ulh ulhu ulw +syntax keyword mipsInstruction ll + +" Store Instructions +syntax keyword mipsInstruction sb sh sw swc1 sdc1 swl swr sd ush usw sc + +" Data Movement Instructions +syntax keyword mipsInstruction move +syntax keyword mipsInstruction mfhi mflo +syntax keyword mipsInstruction mthi mtlo +syntax keyword mipsInstruction mfc0 mfc1 +syntax match mipsInstruction "mfc1\.d" +syntax keyword mipsInstruction mtc0 mtc1 +syntax keyword mipsInstruction movn movz movf movt + +" Floating-Point Instructions +syntax match mipsInstruction "abs\.d" +syntax match mipsInstruction "abs\.s" +syntax match mipsInstruction "add\.d" +syntax match mipsInstruction "add\.s" +syntax match mipsInstruction "ceil\.w\.d" +syntax match mipsInstruction "ceil\.w\.s" +syntax match mipsInstruction "c\.eq\.d" +syntax match mipsInstruction "c\.eq\.s" +syntax match mipsInstruction "c\.le\.d" +syntax match mipsInstruction "c\.le\.s" +syntax match mipsInstruction "c\.lt\.d" +syntax match mipsInstruction "c\.lt\.s" +syntax match mipsInstruction "cvt\.d\.s" +syntax match mipsInstruction "cvt\.d\.w" +syntax match mipsInstruction "cvt\.s\.d" +syntax match mipsInstruction "cvt\.s\.w" +syntax match mipsInstruction "cvt\.w\.d" +syntax match mipsInstruction "cvt\.w\.s" +syntax match mipsInstruction "div\.d" +syntax match mipsInstruction "div\.s" +syntax match mipsInstruction "floor\.w\.d" +syntax match mipsInstruction "floor\.w\.s" +syntax match mipsInstruction "l\.d" +syntax match mipsInstruction "l\.s" +syntax match mipsInstruction "mov\.d" +syntax match mipsInstruction "mov\.s" +syntax match mipsInstruction "movf\.d" +syntax match mipsInstruction "movf\.s" +syntax match mipsInstruction "movt\.d" +syntax match mipsInstruction "movt\.s" +syntax match mipsInstruction "movn\.d" +syntax match mipsInstruction "movn\.s" +syntax match mipsInstruction "movz\.d" +syntax match mipsInstruction "movz\.s" +syntax match mipsInstruction "mul\.d" +syntax match mipsInstruction "mul\.s" +syntax match mipsInstruction "neg\.d" +syntax match mipsInstruction "neg\.s" +syntax match mipsInstruction "round\.w\.d" +syntax match mipsInstruction "round\.w\.s" +syntax match mipsInstruction "sqrt\.d" +syntax match mipsInstruction "sqrt\.s" +syntax match mipsInstruction "s\.d" +syntax match mipsInstruction "s\.s" +syntax match mipsInstruction "sub\.d" +syntax match mipsInstruction "sub\.s" +syntax match mipsInstruction "trunc\.w\.d" +syntax match mipsInstruction "trunc\.w\.s" + +" Exception and Interrupt Instructions +syntax keyword mipsInstruction eret +syntax keyword mipsInstruction syscall +syntax keyword mipsInstruction break +syntax keyword mipsInstruction nop + +hi def link mipsComment Comment +hi def link mipsNumber Number +hi def link mipsString String +hi def link mipsLabel Label +hi def link mipsRegister Identifier +hi def link mipsDirective Type +hi def link mipsInstruction Statement + +let b:current_syntax = "mips" |