40 lines
1.2 KiB
VimL
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"
|
|
|