33

默认的程序集语法文件效果不佳,在网上搜索有关 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(默认)

http://img164.imageshack.us/img164/8476/tasm.png ft=tasm

4

4 回答 4

55

这可能会让你开始。这更像你正在寻找的东西吗?

刚刚进行了快速搜索 - 看起来内置了几种不同类型的汇编语法突出显示。您使用的是哪一种?

从 :help 语法复制粘贴

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 文件类型。尝试

:set ft=nasm

您应该根据这些屏幕截图获得一些颜色变化。

ft=nasm

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

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

这个 vim 脚本依赖于形式为 % comment 的注释,其中包含空格。您可以在脚本的第 116 行看到这一点(或根据需要更改它)。

请注意:不要复制行号。

于 2009-04-23T16:04:01.517 回答
29

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

语法文件可从 vim.org 获得:GNU as syntax for X86
以及直接在 GitHub 上:GNU as syntax for X86

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

  • X86通用指令集(8086-686)
  • Katmai 流式 SIMD 指令(SSE——又名 KNI、XMM、MMX2)
  • 在 Deschutes 中引入,但对于 SSE 支持是必需的
  • XSAVE 组(AVX 和扩展状态)
  • 通用内存操作
  • Katmai 中引入了新的 MMX 指令
  • AMD 增强型 3DNow!(速龙)说明
  • Willamette SSE2 可缓存性说明
  • Willamette MMX 指令(SSE2 SIMD 整数指令)
  • Willamette 流式 SIMD 指令 (SSE2)
  • 普雷斯科特新指令 (SSE3)
  • VMX 指令
  • 扩展页表 VMX 指令
  • 光辉新指令 (SSSE3)
  • AMD SSE4A
  • 巴塞罗那的新指令
  • Penryn 新指令 (SSE4.1)
  • Nehalem 新指令 (SSE4.2)
  • AMD SSE5 指令
  • 英特尔 SMX
  • Geode (Cyrix) 3D现在!补充
  • 英特尔 AES 指令
  • 英特尔 AVX AES 指令
  • 英特尔 AVX 指令
  • 英特尔无进位乘法指令 (CLMUL)
  • 英特尔 AVX 无进位乘法指令 (CLMUL)
  • 英特尔融合乘加指令 (FMA)
  • 威盛(Centaur)安全说明
  • AMD XOP、FMA4 和 CVT16 指令 (SSE5)
  • 提示 nop 指令的系统名称

这是它的样子:

替代文字

于 2009-11-21T14:03:03.223 回答
3

每当您打开文件时,将这一行放入您的遗嘱中.vimrc都会为您设置 intel 语法:.asm

autocmd BufNew,BufRead *.asm set ft=nasm
于 2021-05-06T15:15:08.227 回答
2

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

为此,请弄清楚文件类型的注释语法是什么,然后在文件末尾添加这样的一行:(例如 for NASM

; vim:ft=nasm

此图像显示了语法高亮显示以及添加行后文件的外观。

在此处输入图像描述

于 2020-12-13T17:26:04.363 回答