Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
汇编vim语法高亮显示_Vim_Assembly_X86_Vim Syntax Highlighting - Fatal编程技术网

汇编vim语法高亮显示

汇编vim语法高亮显示,vim,assembly,x86,vim-syntax-highlighting,Vim,Assembly,X86,Vim Syntax Highlighting,默认的汇编语法文件工作不好,在web上搜索gas assembly时,我没有找到vim的gas(AT&t)语法文件。有人找到这个吗?我无法编写自己的语法文件 ft=nasm ft=asm(默认值) ft=tasm开始吧。这更像你要找的吗 刚刚进行了一次快速搜索-看起来内置了几种不同类型的程序集语法高亮显示。你用哪一种 复制粘贴自:帮助语法 Currently these syntax files are included: asm GNU assembly (the defaul

默认的汇编语法文件工作不好,在web上搜索gas assembly时,我没有找到vim的gas(AT&t)语法文件。有人找到这个吗?我无法编写自己的语法文件

ft=nasm

ft=asm(默认值)

ft=tasm

开始吧。这更像你要找的吗

刚刚进行了一次快速搜索-看起来内置了几种不同类型的程序集语法高亮显示。你用哪一种

复制粘贴自:帮助语法

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.
此附加信息来自vim.org

看起来您的屏幕截图使用的是默认的asm文件类型。 试一试

根据这些截图,你应该会得到一些颜色的变化

从上面的屏幕截图中,我对fasm vim语法做了一些快速修改,并将其命名为gasm。 可以在pastebin上找到它

将其复制并粘贴到personal.vim/syntax或vimfiles/syntax目录中,并将其命名为gasm.vim 然后在程序集文件中:set ft=gasm

此vim脚本依赖于以下形式的注释 %评论 包括空间。 您可以在脚本的第116行看到这一点(如果愿意,也可以对其进行更改)


请注意:不要复制行号。

我从头开始编写完整的GNU语法

语法文件可从vim.org获得:
以及直接在GitHub上:

除基本指令外,它还将识别以下扩展Intel/AMD指令:

  • X86通用指令集(8086-686)
  • Katmai数据流单指令多数据指令集指令集(SSE--a.k.a.KNI、XMM、MMX2)
  • 在Deschutes中引入,但对SSE支持是必要的
  • XSAVE组(AVX和扩展状态)
  • 通用内存操作
  • Katmai中引入的新MMX指令
  • AMD增强3DNow!(Athlon)说明
  • Willamette SSE2可缓存性说明
  • Willamette MMX指令(SSE2 SIMD整数指令)
  • Willamette数据流单指令多数据指令集指令集(SSE2)
  • 普雷斯科特新指令(SSE3)
  • VMX指令
  • 扩展页表VMX指令
  • Tejas新指令(SSSE3)
  • AMD SSE4A
  • 巴塞罗那的新指示
  • Penryn新指令(SSE4.1)
  • Nehalem新说明(SSE4.2)
  • amdsse5指令
  • 英特尔SMX
  • Geode(Cyrix)3DNow!添加物
  • 英特尔AES指令
  • 英特尔AVX AES指令
  • 英特尔AVX指令
  • 英特尔无载波乘法指令(CLMUL)
  • 英特尔AVX无载波乘法指令(CLMUL)
  • 英特尔融合乘法加法指令(FMA)
  • VIA(半人马座)安全说明
  • AMD XOP、FMA4和CVT16指令(SSE5)
  • 暗示nop指令的系统名称
下面是它的样子:


Vim/Nvim
如果无法检测到特定的文件类型,可以通过文件本身中的实际宏来告诉它是什么,而无需每次打开文件时都运行
:set ft=nasm
命令

为此,请找出文件类型的注释语法,并在文件末尾添加一行如下内容:(例如for
NASM

此图显示了操作中的语法突出显示,以及添加行后文件的外观


只要打开
.asm
文件,将这一行放入
.vimrc
中,就会为您设置英特尔语法:

autocmd BufNew,BufRead *.asm set ft=nasm

哦,你喜欢那些颜色!介意分享一下它们是什么吗?这个方案叫做“莴苣”:我必须更新屏幕截图-现在的颜色是“base16 bright”()啊,如果我足够聪明,先用谷歌搜索一下的话。。。几年前我会省去很多麻烦的。无论如何,我为我移植到vim的Sublime文本制作了一个:()我已经对它进行了广泛的测试,我认为这是一个不错的选择。我走了另一条路,学会了讨厌Sublime语法引擎^^^图像消失了。你能看看你是否能挽救这些信息吗?如果您仍然有图像,将它们上载到SE自己的imgur帐户将防止再次发生这种情况。如果您恢复图像,这将非常好。如果您想自己查找所提到的
:help syntax
摘录,请参阅第821行(使用
:set number
nasm
高亮显示实际上对
.S
/
.S
GNU汇编程序文件有用吗?它们使用不同的注释字符。我认为您对
.S
的看法是正确的,因为据我所知,它需要GNU预处理器,因此是用于gcc的。您对
.s
的看法也是正确的,因为调用
gcc-s
将输出的格式是正确的,但在我的情况下,我保留它是为了从
Make
简单程序的隐式规则中获益,因为
Make
似乎无法从
.asm
文件自动生成
.o
。Make的内置规则
.s
文件在其上运行
gcc
,如果它们是用NASM语法编写的,则无法工作。GNU汇编程序使用完全不同的指令(默认为AT&T语法)。@PeterCordes您是对的,但在我的例子中,我可以很容易地使用Make with
AS=nasm
ASFLAGS=-f elf64
,而且它工作得很好。你似乎知道的比我多,所以请随意编辑我的答案相应。我添加这个答案的原因是因为这是一个简单/懒惰的永久性修复,我希望我读过之后能尽快摆脱pb的困扰。特别是因为ALE linter对我的英特尔语法最不满意。你有没有建议一种更好/更传统的方法?我完全听说了。如果您必须实际编写一个Makefile,那么您最好使用模式规则从
.asm
文件生成
.o
。当我在搞asm时,通常是由一个文件程序来测试一些东西
; vim:ft=nasm
autocmd BufNew,BufRead *.asm set ft=nasm