]>
luflow.net public git repositories - flow-web.git/blob - static/highlight/languages/mipsasm.js
1 /*! `mipsasm` grammar compiled for Highlight.js 11.11.1 */
3 var hljsGrammar
= (function () {
7 Language: MIPS Assembly
8 Author: Nebuleon Fumika <nebuleon.fumika@gmail.com>
9 Description: MIPS Assembly (up to MIPS32R2)
10 Website: https://en.wikipedia.org/wiki/MIPS_architecture
14 function mipsasm(hljs
) {
15 // local labels: %?[FB]?[AT]?\d{1,2}\w+
17 name: 'MIPS Assembly',
18 case_insensitive: true,
21 $pattern: '\\.?' + hljs
.IDENT_RE
,
24 '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ',
26 '$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 ' // integer registers
27 + '$16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 ' // integer registers
28 + 'zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 ' // integer register aliases
29 + 't0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 ' // integer register aliases
30 + 'k0 k1 gp sp fp ra ' // integer register aliases
31 + '$f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 ' // floating-point registers
32 + '$f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 ' // floating-point registers
33 + 'Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi ' // Coprocessor 0 registers
34 + 'HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId ' // Coprocessor 0 registers
35 + 'EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ' // Coprocessor 0 registers
36 + 'ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt ' // Coprocessor 0 registers
41 begin: '\\b(' // mnemonics
42 // 32-bit integer instructions
43 + 'addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|'
44 + 'bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(\\.hb)?|jr(\\.hb)?|lbu?|lhu?|'
45 + 'll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|'
46 + 'multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|'
47 + 'srlv?|subu?|sw[lr]?|xori?|wsbh|'
48 // floating-point instructions
49 + 'abs\\.[sd]|add\\.[sd]|alnv.ps|bc1[ft]l?|'
50 + 'c\\.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et])\\.[sd]|'
51 + '(ceil|floor|round|trunc)\\.[lw]\\.[sd]|cfc1|cvt\\.d\\.[lsw]|'
52 + 'cvt\\.l\\.[dsw]|cvt\\.ps\\.s|cvt\\.s\\.[dlw]|cvt\\.s\\.p[lu]|cvt\\.w\\.[dls]|'
53 + 'div\\.[ds]|ldx?c1|luxc1|lwx?c1|madd\\.[sd]|mfc1|mov[fntz]?\\.[ds]|'
54 + 'msub\\.[sd]|mth?c1|mul\\.[ds]|neg\\.[ds]|nmadd\\.[ds]|nmsub\\.[ds]|'
55 + 'p[lu][lu]\\.ps|recip\\.fmt|r?sqrt\\.[ds]|sdx?c1|sub\\.[ds]|suxc1|'
57 // system control instructions
58 + 'break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|'
59 + 'rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|'
60 + 'tlti?u?|tnei?|wait|wrpgpr'
64 // lines ending with ; or # aren't really comments, probably auto-detect fail
65 hljs
.COMMENT('[;#](?!\\s*$)', '$'),
66 hljs
.C_BLOCK_COMMENT_MODE
,
67 hljs
.QUOTE_STRING_MODE
,
85 begin: '0x[0-9a-f]+' },
95 begin: '^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:' },
96 { // numbered local labels
97 begin: '^\\s*[0-9]+:' },
98 { // number local label reference (backwards, forwards)
104 // forward slashes are not allowed
113 hljs
.registerLanguage('mipsasm', hljsGrammar
);