]> luflow.net public git repositories - flow-web.git/blob - static/highlight/es/languages/mipsasm.js
Initial commit.
[flow-web.git] / static / highlight / es / languages / mipsasm.js
1 /*! `mipsasm` grammar compiled for Highlight.js 11.11.1 */
2 var hljsGrammar = (function () {
3 'use strict';
4
5 /*
6 Language: MIPS Assembly
7 Author: Nebuleon Fumika <nebuleon.fumika@gmail.com>
8 Description: MIPS Assembly (up to MIPS32R2)
9 Website: https://en.wikipedia.org/wiki/MIPS_architecture
10 Category: assembler
11 */
12
13 function mipsasm(hljs) {
14 // local labels: %?[FB]?[AT]?\d{1,2}\w+
15 return {
16 name: 'MIPS Assembly',
17 case_insensitive: true,
18 aliases: [ 'mips' ],
19 keywords: {
20 $pattern: '\\.?' + hljs.IDENT_RE,
21 meta:
22 // GNU preprocs
23 '.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 ',
24 built_in:
25 '$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 ' // integer registers
26 + '$16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 ' // integer registers
27 + 'zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 ' // integer register aliases
28 + 't0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 ' // integer register aliases
29 + 'k0 k1 gp sp fp ra ' // integer register aliases
30 + '$f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 ' // floating-point registers
31 + '$f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 ' // floating-point registers
32 + 'Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi ' // Coprocessor 0 registers
33 + 'HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId ' // Coprocessor 0 registers
34 + 'EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ' // Coprocessor 0 registers
35 + 'ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt ' // Coprocessor 0 registers
36 },
37 contains: [
38 {
39 className: 'keyword',
40 begin: '\\b(' // mnemonics
41 // 32-bit integer instructions
42 + 'addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|'
43 + 'bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(\\.hb)?|jr(\\.hb)?|lbu?|lhu?|'
44 + 'll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|'
45 + 'multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|'
46 + 'srlv?|subu?|sw[lr]?|xori?|wsbh|'
47 // floating-point instructions
48 + 'abs\\.[sd]|add\\.[sd]|alnv.ps|bc1[ft]l?|'
49 + 'c\\.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et])\\.[sd]|'
50 + '(ceil|floor|round|trunc)\\.[lw]\\.[sd]|cfc1|cvt\\.d\\.[lsw]|'
51 + 'cvt\\.l\\.[dsw]|cvt\\.ps\\.s|cvt\\.s\\.[dlw]|cvt\\.s\\.p[lu]|cvt\\.w\\.[dls]|'
52 + 'div\\.[ds]|ldx?c1|luxc1|lwx?c1|madd\\.[sd]|mfc1|mov[fntz]?\\.[ds]|'
53 + 'msub\\.[sd]|mth?c1|mul\\.[ds]|neg\\.[ds]|nmadd\\.[ds]|nmsub\\.[ds]|'
54 + 'p[lu][lu]\\.ps|recip\\.fmt|r?sqrt\\.[ds]|sdx?c1|sub\\.[ds]|suxc1|'
55 + 'swx?c1|'
56 // system control instructions
57 + 'break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|'
58 + 'rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|'
59 + 'tlti?u?|tnei?|wait|wrpgpr'
60 + ')',
61 end: '\\s'
62 },
63 // lines ending with ; or # aren't really comments, probably auto-detect fail
64 hljs.COMMENT('[;#](?!\\s*$)', '$'),
65 hljs.C_BLOCK_COMMENT_MODE,
66 hljs.QUOTE_STRING_MODE,
67 {
68 className: 'string',
69 begin: '\'',
70 end: '[^\\\\]\'',
71 relevance: 0
72 },
73 {
74 className: 'title',
75 begin: '\\|',
76 end: '\\|',
77 illegal: '\\n',
78 relevance: 0
79 },
80 {
81 className: 'number',
82 variants: [
83 { // hex
84 begin: '0x[0-9a-f]+' },
85 { // bare number
86 begin: '\\b-?\\d+' }
87 ],
88 relevance: 0
89 },
90 {
91 className: 'symbol',
92 variants: [
93 { // GNU MIPS syntax
94 begin: '^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:' },
95 { // numbered local labels
96 begin: '^\\s*[0-9]+:' },
97 { // number local label reference (backwards, forwards)
98 begin: '[0-9]+[bf]' }
99 ],
100 relevance: 0
101 }
102 ],
103 // forward slashes are not allowed
104 illegal: /\//
105 };
106 }
107
108 return mipsasm;
109
110 })();
111 ;
112 export default hljsGrammar;