|
|
||
|---|---|---|
| LICENSE | ||
| README.md | ||
README.md
VIM-GAS
This vim bundle adds advanced syntax highlighting for GNU as (AT&T) for *86 CPUs.
This file defines a (almost) complete syntax for GNU as assembler.
My motivation in writing this was the lack of a complete, working syntax for this common assembler.
For now the basic as directives as well as the Intel / AMD instruction sets are included. Opcodes supporting a size suffix are recognized plain as well as suffixed with b/w/l/q.
What does it look like?
Supported instructions a per version 0.6:
- X86 common instruction set (8086 - 686)
- Katmai Streaming SIMD instructions (SSE -- a.k.a. KNI, XMM, MMX2)
- Introduced in Deschutes but necessary for SSE support
- XSAVE group (AVX and extended state)
- Generic memory operations
- New MMX instructions introduced in Katmai
- AMD Enhanced 3DNow! (Athlon) instructions
- Willamette SSE2 Cacheability Instructions
- Willamette MMX instructions (SSE2 SIMD Integer Instructions)
- Willamette Streaming SIMD instructions (SSE2)
- Prescott New Instructions (SSE3)
- VMX Instructions
- Extended Page Tables VMX instructions
- Tejas New Instructions (SSSE3)
- AMD SSE4A
- New instructions in Barcelona
- Penryn New Instructions (SSE4.1)
- Nehalem New Instructions (SSE4.2)
- AMD SSE5 instructions
- Intel SMX
- Geode (Cyrix) 3DNow! additions
- Intel AES instructions
- Intel AVX AES instructions
- Intel AVX instructions
- Intel Carry-Less Multiplication instructions (CLMUL)
- Intel AVX Carry-Less Multiplication instructions (CLMUL)
- Intel Fused Multiply-Add instructions (FMA)
- VIA (Centaur) security instructions
- AMD XOP, FMA4 and CVT16 instructions (SSE5)
- Systematic names for the hinting nop instructions
You can set different highlighting for each set listed above by adding a line like this to you .vimrc:
hi def link gasOpcodeX86_PENT_SSE <some_highlighting>
per-file opcode enable / disable
Since version 0.6 it is possible to disable sets of opcodes by either CPU they where introduced in or by their extension name. This is done by setting a special variable recognized by gas.vim to the list of disabled opcodes.
E.g.
" globally disable all x86_64 opcodes
:let g:gasDisableOpcodes='x86_64'
" disable SSE and SSE2 for this buffer
let b:gasDisableOpcodes='sse sse2'
Disabled opcodes will be highlighted as errors.
recognized CPU groups:
186, 286, 386, 3862, 486, 8086, amd, future, ia64, katmai, nehalem,
p6, pentium_m, pentium, prescott, sandybridge, x64, x642, x86_64
recognized extension groups:
base, 3dnow, mmx, mmx2, sse, sse2, sse3, ssse3, sse4.1, sse4.2, sse4a,
sse5, avx, fma, vmx
I hope this syntax file will be useful to other people - but don't blame me if it doesn't suit your needs.
Installation
This syntax file can either be installed manually or by using pathogen.
Manual Installation
Download gas.vim and the file to .vim/syntax/ in your home folder. Add this line to the end of your file:
/* vim: ft=gas :
*/
Installation with Git & Pathogen
-
Install pathogen into
~/.vim/autoload/and add the following line to your~/.vimrc:call pathogen#infect() -
Make a clone of the
vim-gasrepository:$ mkdir -p ~/.vim/bundle $ cd ~/.vim/bundle $ git clone https://github.com/Shirk/vim-gas -
OR use git submodules:
$ git submodule add https://github.com/Shirk/vim-gas.git bundle/vim-gas $ git submodule init
License
BSD (3 clause) - see COPYING for details
