l0bsterssg

node.js static responsive blog post generator
Log | Files | Refs | README

avrasm.js (2913B)


      1 /*
      2 Language: AVR Assembly
      3 Author: Vladimir Ermakov <vooon341@gmail.com>
      4 Category: assembler
      5 Website: https://www.microchip.com/webdoc/avrassembler/avrassembler.wb_instruction_list.html
      6 */
      7 
      8 /** @type LanguageFn */
      9 function avrasm(hljs) {
     10   return {
     11     name: 'AVR Assembly',
     12     case_insensitive: true,
     13     keywords: {
     14       $pattern: '\\.?' + hljs.IDENT_RE,
     15       keyword:
     16         /* mnemonic */
     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         /* general purpose registers */
     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         /* IO Registers (ATMega128) */
     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         {
     47           relevance: 0
     48         }
     49       ),
     50       hljs.C_NUMBER_MODE, // 0x..., decimal, float
     51       hljs.BINARY_NUMBER_MODE, // 0b...
     52       {
     53         className: 'number',
     54         begin: '\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)' // $..., 0o...
     55       },
     56       hljs.QUOTE_STRING_MODE,
     57       {
     58         className: 'string',
     59         begin: '\'', end: '[^\\\\]\'',
     60         illegal: '[^\\\\][^\']'
     61       },
     62       {className: 'symbol',  begin: '^[A-Za-z0-9_.$]+:'},
     63       {className: 'meta', begin: '#', end: '$'},
     64       {  // substitution within a macro
     65         className: 'subst',
     66         begin: '@[0-9]+'
     67       }
     68     ]
     69   };
     70 }
     71 
     72 module.exports = avrasm;