默认的汇编语法文件效果不好,在网上搜索关于gas汇编的资料,我没有找到任何适用于vim的gas(AT&T)语法文件。有人找到了吗?我自己不能编写语法文件。
http://img168.imageshack.us/img168/46/nasm.png ft=nasm
http://img160.imageshack.us/img160/5857/asm.png ft=asm(default)
http://img168.imageshack.us/img168/46/nasm.png ft=nasm
http://img160.imageshack.us/img160/5857/asm.png ft=asm(default)
这可能能让你入门。这更像是你在找什么吗?
我只是快速搜索了一下 - 看起来有几种不同类型的汇编语法高亮内置。你用的是哪个?
从 :help syntax 复制粘贴
Currently these syntax
files are included:
asm GNU assembly (the default)
asm68k Motorola 680x0 assembly
asmh8300 Hitachi H-8300 version of GNU assembly
ia64 Intel Itanium 64
fasm Flat assemlby http://flatassembler.net
masm Microsoft assembly (probably works for any 80x86)
nasm Netwide assembly
tasm Turbo Assembly (with opcodes 80x86 up to Pentium, and
MMX)
pic PIC assembly (currently for PIC16F84)
The most flexible is to add a line in your assembly file containing:
:asmsyntax=nasm
Replace "nasm" with the name of the real assembly syntax. This line must be
one of the first five lines in the file.
这个额外的 syntax script 来自vim.org
看起来你的截图正在使用默认的asm文件类型。尝试一下
:set ft=nasm
你应该会看到一些颜色变化,就像这些截图一样。
根据您上面的截图,我对fasm vim语法进行了一些快速修改,并将其称为gasm。 可以在这里的pastebin上找到它。
将其复制并粘贴到您的个人.vim / syntax或vimfiles / syntax目录中,并将其命名为gasm.vim 然后在您的汇编文件中:set ft = gasm
此vim脚本依赖于注释的形式为 %注释 包括空格。 您可以在脚本的第116行中查看此内容(如果希望更改,则可以更改)。
请注意:不要复制行号。
:help syntax
摘录,它大约在第821行(使用 :set number
)。 - spicy.dll以下是示例图片:
.vimrc
文件中,每次打开一个 .asm
文件时都会自动使用 intel 语法:autocmd BufNew,BufRead *.asm set ft=nasm
.S
/ .s
GNU 汇编文件,nasm
的语法高亮是否真的好用呢?由于它们使用不同的注释字符。 - Peter Cordes.S
的看法是正确的,因为据我所知它会调用 GNU 预处理器,因此适用于 gcc。
你也对 .s
有正确的理解,因为它是通过调用 gcc -S
输出的格式,但在我的情况下,我会保留它以便从 Make
对于简单程序的隐式规则中受益,因为 Make
似乎无法自动从 .asm
文件生成 .o
。 - cassepipe.s
文件规则会在其上运行gcc
,如果它们是用NASM语法编写的,则无法正常工作。GNU汇编器使用完全不同的指令(并默认为AT&T语法)。 - Peter CordesAS = nasm
以及ASFLAGS = -f elf64
,它运行良好。你似乎比我更了解,请随意编辑我的答案。我添加此答案的原因是因为这是我希望能够快速摆脱这个问题的简单/懒惰的永久性解决方案。特别是因为ALE linter对我的英特尔语法非常不满意。您是否建议更好/更常规的方法?我全听着。 - cassepipe.asm
文件生成.o
文件。当我在处理汇编语言时,通常是为了测试某个单独的文件程序,所以我只需运行我自己编写的脚本asm-link foo.asm
(包含在此答案中)。不需要费心去编写Makefile。(也不需要破坏vim设置如何处理正常的.s
/ .S
文件,这些文件确实具有Unix汇编内容。)因此,我只需删除*.s
行,保留.asm
行即可。 - Peter Cordes