1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | function avrasm(hljs) {
|
10 | return {
|
11 | name: 'AVR Assembly',
|
12 | case_insensitive: true,
|
13 | keywords: {
|
14 | $pattern: '\\.?' + hljs.IDENT_RE,
|
15 | keyword:
|
16 |
|
17 | 'adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs '
|
18 | + 'brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr '
|
19 | + 'clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor '
|
20 | + 'fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul '
|
21 | + 'muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs '
|
22 | + 'sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub '
|
23 | + 'subi swap tst wdr',
|
24 | built_in:
|
25 |
|
26 | 'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 '
|
27 | + 'r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl '
|
28 |
|
29 | + 'ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h '
|
30 | + 'tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c '
|
31 | + 'ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg '
|
32 | + 'ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk '
|
33 | + 'tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al '
|
34 | + 'ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr '
|
35 | + 'porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 '
|
36 | + 'ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf',
|
37 | meta:
|
38 | '.byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list '
|
39 | + '.listmac .macro .nolist .org .set'
|
40 | },
|
41 | contains: [
|
42 | hljs.C_BLOCK_COMMENT_MODE,
|
43 | hljs.COMMENT(
|
44 | ';',
|
45 | '$',
|
46 | { relevance: 0 }
|
47 | ),
|
48 | hljs.C_NUMBER_MODE,
|
49 | hljs.BINARY_NUMBER_MODE,
|
50 | {
|
51 | className: 'number',
|
52 | begin: '\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)'
|
53 | },
|
54 | hljs.QUOTE_STRING_MODE,
|
55 | {
|
56 | className: 'string',
|
57 | begin: '\'',
|
58 | end: '[^\\\\]\'',
|
59 | illegal: '[^\\\\][^\']'
|
60 | },
|
61 | {
|
62 | className: 'symbol',
|
63 | begin: '^[A-Za-z0-9_.$]+:'
|
64 | },
|
65 | {
|
66 | className: 'meta',
|
67 | begin: '#',
|
68 | end: '$'
|
69 | },
|
70 | {
|
71 | className: 'subst',
|
72 | begin: '@[0-9]+'
|
73 | }
|
74 | ]
|
75 | };
|
76 | }
|
77 |
|
78 | module.exports = avrasm;
|