@@ -9,72 +9,68 @@ Category: assembler
9
9
export default function ( hljs ) {
10
10
// local labels: %?[FB]?[AT]?\d{1,2}\w+
11
11
12
- const COMMENT = {
13
- variants : [
14
- hljs . COMMENT ( '^[ \\t]*(?=#)' , '$' , {
15
- relevance : 0 ,
16
- excludeBegin : true
17
- } ) ,
18
- hljs . COMMENT ( '[;@]' , '$' , {
19
- relevance : 0
20
- } ) ,
21
- hljs . C_LINE_COMMENT_MODE ,
22
- hljs . C_BLOCK_COMMENT_MODE
23
- ]
24
- } ;
12
+ const COMMENT = { variants : [
13
+ hljs . COMMENT ( '^[ \\t]*(?=#)' , '$' , {
14
+ relevance : 0 ,
15
+ excludeBegin : true
16
+ } ) ,
17
+ hljs . COMMENT ( '[;@]' , '$' , { relevance : 0 } ) ,
18
+ hljs . C_LINE_COMMENT_MODE ,
19
+ hljs . C_BLOCK_COMMENT_MODE
20
+ ] } ;
25
21
26
22
return {
27
23
name : 'ARM Assembly' ,
28
24
case_insensitive : true ,
29
- aliases : [ 'arm' ] ,
25
+ aliases : [ 'arm' ] ,
30
26
keywords : {
31
27
$pattern : '\\.?' + hljs . IDENT_RE ,
32
28
meta :
33
29
// GNU preprocs
34
- '.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 .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ' +
30
+ '.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 .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg '
35
31
// ARM directives
36
- 'ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ' ,
32
+ + 'ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ' ,
37
33
built_in :
38
- 'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 ' + // standard registers
39
- 'pc lr sp ip sl sb fp ' + // typical regs plus backward compatibility
40
- 'a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 ' + // more regs and fp
41
- 'p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 ' + // coprocessor regs
42
- 'c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 ' + // more coproc
43
- 'q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 ' + // advanced SIMD NEON regs
34
+ 'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 ' // standard registers
35
+ + 'pc lr sp ip sl sb fp ' // typical regs plus backward compatibility
36
+ + 'a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 ' // more regs and fp
37
+ + 'p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 ' // coprocessor regs
38
+ + 'c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 ' // more coproc
39
+ + 'q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 ' // advanced SIMD NEON regs
44
40
45
41
// program status registers
46
- 'cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf ' +
47
- 'spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf ' +
42
+ + 'cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf '
43
+ + 'spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf '
48
44
49
45
// NEON and VFP registers
50
- 's0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 ' +
51
- 's16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 ' +
52
- 'd0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 ' +
53
- 'd16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 ' +
46
+ + 's0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 '
47
+ + 's16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 '
48
+ + 'd0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 '
49
+ + 'd16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 '
54
50
55
- '{PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @'
51
+ + '{PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @'
56
52
} ,
57
53
contains : [
58
54
{
59
55
className : 'keyword' ,
60
- begin : '\\b(' + // mnemonics
61
- 'adc|' +
62
- '(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|' +
63
- 'and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|' +
64
- 'bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|' +
65
- 'setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|' +
66
- 'ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|' +
67
- 'mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|' +
68
- 'mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|' +
69
- 'mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|' +
70
- 'rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|' +
71
- 'stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|' +
72
- '[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|' +
73
- 'wfe|wfi|yield' +
74
- ')' +
75
- '(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?' + // condition codes
76
- '[sptrx]?' + // legal postfixes
77
- '(?=\\s)' // followed by space
56
+ begin : '\\b(' // mnemonics
57
+ + 'adc|'
58
+ + '(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|'
59
+ + 'and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|'
60
+ + 'bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|'
61
+ + 'setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|'
62
+ + 'ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|'
63
+ + 'mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|'
64
+ + 'mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|'
65
+ + 'mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|'
66
+ + 'rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|'
67
+ + 'stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|'
68
+ + '[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|'
69
+ + 'wfe|wfi|yield'
70
+ + ')'
71
+ + '(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?' // condition codes
72
+ + '[sptrx]?' // legal postfixes
73
+ + '(?=\\s)' // followed by space
78
74
} ,
79
75
COMMENT ,
80
76
hljs . QUOTE_STRING_MODE ,
@@ -95,32 +91,25 @@ export default function(hljs) {
95
91
className : 'number' ,
96
92
variants : [
97
93
{ // hex
98
- begin : '[#$=]?0x[0-9a-f]+'
99
- } ,
94
+ begin : '[#$=]?0x[0-9a-f]+' } ,
100
95
{ // bin
101
- begin : '[#$=]?0b[01]+'
102
- } ,
96
+ begin : '[#$=]?0b[01]+' } ,
103
97
{ // literal
104
- begin : '[#$=]\\d+'
105
- } ,
98
+ begin : '[#$=]\\d+' } ,
106
99
{ // bare number
107
- begin : '\\b\\d+'
108
- }
100
+ begin : '\\b\\d+' }
109
101
] ,
110
102
relevance : 0
111
103
} ,
112
104
{
113
105
className : 'symbol' ,
114
106
variants : [
115
107
{ // GNU ARM syntax
116
- begin : '^[ \\t]*[a-z_\\.\\$][a-z0-9_\\.\\$]+:'
117
- } ,
108
+ begin : '^[ \\t]*[a-z_\\.\\$][a-z0-9_\\.\\$]+:' } ,
118
109
{ // ARM syntax
119
- begin : '^[a-z_\\.\\$][a-z0-9_\\.\\$]+'
120
- } ,
110
+ begin : '^[a-z_\\.\\$][a-z0-9_\\.\\$]+' } ,
121
111
{ // label reference
122
- begin : '[=#]\\w+'
123
- }
112
+ begin : '[=#]\\w+' }
124
113
] ,
125
114
relevance : 0
126
115
}
0 commit comments