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