{\makeatletter%
\gdef\lstmipsconsumedollar\$#1\@nil{\textcolor{lightgray}{\$}\textit{#1}}
\gdef\lstmipsregstyle#1{\ifnum\lst@mode=\lst@Pmode \lstmipsconsumedollar#1\@nil\else#1\fi}
}
\lstdefinelanguage{lMips}{
alsoletter={\$},sensitive=false,
moredelim=**[is][{\xlsthlboxd{\xlstcustom}}]{|custom|}{|custom|},
moredelim=[is][]{|plain|}{|plain|},
moredelim=**[is][\xlstGetStyle{numbers}]{|num|}{|num|},
moredelim=**[is][\xlstGetStyle{literals}]{|str|}{|str|},
moredelim=**[is][\xlstGetStyle{comments}]{|cmt|}{|cmt|},
comment=[l]{\#},
morestring = [s]"", % maybe use d?
morestring = [s]'',
morekeywords={ld,st,sr,sl,beq,bnq,add,sub,and,or,not,xor,dec,inc,jmp,addi,subi,sw,addui,sw,lw,slti,j,jal,div,mul,hi,lo,jr,addiu,%
la,lb,li,bne,mult,mflo,lh,sh,sb,nor,andi,ori,sll,srl,slt},
morekeywords=[2]{syscall},%
morekeywords = [3]{.text,.data,.ascii,.word,.asciiz, .space},
% num highlight cheese :P
add to literate={\$0}{{{\lstmipsregstyle{\$0}}}}2
{\$1}{{{\lstmipsregstyle{\$1}}}}2 {\$2}{{{\lstmipsregstyle{\$2}}}}2 {\$3}{{{\lstmipsregstyle{\$3}}}}2 {\$4}{{{\lstmipsregstyle{\$4}}}}2
{\$5}{{{\lstmipsregstyle{\$5}}}}2 {\$6}{{{\lstmipsregstyle{\$6}}}}2 {\$7}{{{\lstmipsregstyle{\$7}}}}2 {\$8}{{{\lstmipsregstyle{\$8}}}}2
{\$9}{{{\lstmipsregstyle{\$9}}}}2
{\$10}{{{\lstmipsregstyle{\$10}}}}3 {\$11}{{{\lstmipsregstyle{\$11}}}}3 {\$12}{{{\lstmipsregstyle{\$12}}}}3 {\$13}{{{\lstmipsregstyle{\$13}}}}3
{\$14}{{{\lstmipsregstyle{\$14}}}}3 {\$15}{{{\lstmipsregstyle{\$15}}}}3 {\$16}{{{\lstmipsregstyle{\$16}}}}3 {\$17}{{{\lstmipsregstyle{\$17}}}}3
{\$18}{{{\lstmipsregstyle{\$18}}}}3 {\$19}{{{\lstmipsregstyle{\$19}}}}3 {\$20}{{{\lstmipsregstyle{\$20}}}}3 {\$21}{{{\lstmipsregstyle{\$21}}}}3
{\$22}{{{\lstmipsregstyle{\$22}}}}3 {\$23}{{{\lstmipsregstyle{\$23}}}}3 {\$24}{{{\lstmipsregstyle{\$24}}}}3 {\$25}{{{\lstmipsregstyle{\$25}}}}3
{\$26}{{{\lstmipsregstyle{\$26}}}}3 {\$27}{{{\lstmipsregstyle{\$27}}}}3 {\$28}{{{\lstmipsregstyle{\$28}}}}3 {\$29}{{{\lstmipsregstyle{\$29}}}}3
{\$30}{{{\lstmipsregstyle{\$30}}}}3 {\$31}{{{\lstmipsregstyle{\$31}}}}3
{\$r0}{{{\lstmipsregstyle{\$r0}}}}3 {\$at}{{{\lstmipsregstyle{\$at}}}}3 {\$v0}{{{\lstmipsregstyle{\$v0}}}}3
{\$v1}{{{\lstmipsregstyle{\$v1}}}}3 {\$a0}{{{\lstmipsregstyle{\$a0}}}}3 {\$a1}{{{\lstmipsregstyle{\$a1}}}}3 {\$a2}{{{\lstmipsregstyle{\$a2}}}}3
{\$a3}{{{\lstmipsregstyle{\$a3}}}}3 {\$t0}{{{\lstmipsregstyle{\$t0}}}}3 {\$t1}{{{\lstmipsregstyle{\$t1}}}}3 {\$t2}{{{\lstmipsregstyle{\$t2}}}}3
{\$t3}{{{\lstmipsregstyle{\$t3}}}}3 {\$t4}{{{\lstmipsregstyle{\$t4}}}}3 {\$t5}{{{\lstmipsregstyle{\$t5}}}}3 {\$t6}{{{\lstmipsregstyle{\$t6}}}}3
{\$t7}{{{\lstmipsregstyle{\$t7}}}}3 {\$s0}{{{\lstmipsregstyle{\$s0}}}}3 {\$s1}{{{\lstmipsregstyle{\$s1}}}}3 {\$s2}{{{\lstmipsregstyle{\$s2}}}}3
{\$s3}{{{\lstmipsregstyle{\$s3}}}}3 {\$s4}{{{\lstmipsregstyle{\$s4}}}}3 {\$s5}{{{\lstmipsregstyle{\$s5}}}}3 {\$s6}{{{\lstmipsregstyle{\$s6}}}}3
{\$s7}{{{\lstmipsregstyle{\$s7}}}}3 {\$t8}{{{\lstmipsregstyle{\$t8}}}}3 {\$t9}{{{\lstmipsregstyle{\$t9}}}}3 {\$ti}{{{\lstmipsregstyle{\$ti}}}}3
{\$k0}{{{\lstmipsregstyle{\$k0}}}}3 {\$k1}{{{\lstmipsregstyle{\$k1}}}}3 {\$gp}{{{\lstmipsregstyle{\$gp}}}}3 {\$sp}{{{\lstmipsregstyle{\$sp}}}}3
{\$fp}{{{\lstmipsregstyle{\$fp}}}}3 {\$ra}{{{\lstmipsregstyle{\$ra}}}}3 {\$zero}{{{\lstmipsregstyle{\$zero}}}}5
{:hide\$:}{{}}0 % hide dollar, i use it to trick highlighting :D
,%
}
\RegisterLanguage{mips}{lMips}
