nvim/after/syntax/asm.vim
2023-09-08 16:46:55 -04:00

40 lines
1.2 KiB
VimL

syntax case ignore
" Match regexes.
syntax match lc3Label /[A-Za-z_][A-Za-z0-9_]*/
syntax match lc3Register /[rR][0-7]/
syntax match lc3Decimal /#\=-\=\<[0-9]\+\>/
syntax match lc3Hex /x-\=[A-Fa-f0-9]\+/
syntax match lc3Binary /b-\=[01]\+/
syntax region lc3String start=+"+ skip=+\\"+ end=+"+
syntax region lc3Comment start=+;+ end=+$+
" Assembler directives/pseudo-ops
syntax match lc3Directive /\.orig/
syntax match lc3Directive /\.end/
syntax match lc3Directive /\.fill/
syntax match lc3Directive /\.blkw/
syntax match lc3Directive /\.stringz/
" LC-3 opcodes/aliases, minus branches
syntax keyword lc3Opcode add ld st jsrr jsr and ldr str rti not ldi sti jmp ret lea trap nop
" Branches
syntax keyword lc3Opcode br brn brz brp brnz brnp brzp brnzp
" Trap subroutines
syntax keyword lc3Opcode getc out puts in putsp halt
" LC-3b opcodes
syntax keyword lc3Opcode ldb ldw lshf rshfl rshfa stb stw xor
" Link colors.
hi def link lc3Opcode Statement
hi def link lc3Label Identifier
hi def link lc3Register Type
hi def link lc3Directive Define
hi def link lc3Decimal Number
hi def link lc3Hex Number
hi def link lc3Binary Number
hi def link lc3String String
hi def link lc3Comment Comment
let b:current_syntax = "asm"