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;