Initial version
This commit is contained in:
parent
757c08056b
commit
f505619acb
124
README.md
124
README.md
|
|
@ -1,4 +1,122 @@
|
||||||
vim-gas
|
# VIM-GAS
|
||||||
=======
|
|
||||||
|
|
||||||
Advanced syntax highlighting for GNU As
|
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:
|
||||||
|
|
||||||
|
```vim
|
||||||
|
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.
|
||||||
|
|
||||||
|
```vim
|
||||||
|
" 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
|
||||||
|
/* vim: ft=gas :
|
||||||
|
*/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Installation with Git & Pathogen
|
||||||
|
|
||||||
|
- Install [pathogen](http://www.vim.org/scripts/script.php?script_id=2332) into `~/.vim/autoload/` and add the
|
||||||
|
following line to your `~/.vimrc`:
|
||||||
|
|
||||||
|
call pathogen#infect()
|
||||||
|
|
||||||
|
- Make a clone of the `vim-gas` repository:
|
||||||
|
|
||||||
|
$ 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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue