GDB 反汇编窗口如何语法高亮

在 .gdbinit 中设置默认汇编语法为intel。(因为ATT语法看不懂。。)

GDB的反汇编窗口在intel语法下默认是没有高亮的,如图。

我想给关键字和函数实现高亮,请问如何实现呢

我寻思着,汇编里push这种指令算是函数(也算关键字),rax这种寄存器算是关键字, 就只剩下数字了。

(defgroup asm-mode nil
  "Major mode for Intel asm."
  :group 'languages)

(defconst asm-mode--font-lock-keywords
  `(
    ;; operations
    (,(regexp-opt '("and" "mov")
                  'symbols)
     . 'font-lock-keywords)
    ;; registers
    (,(regexp-opt '("rax" "rcx")
                  'symbols)
     . 'font-lock-keywords)))

;;;###autoload
(define-derived-mode asm-mode prog-mode "Intel/ASM"
  "Major mode for editing Intel asm files."
  (setq-local tab-width 4)
  (setq-local indent-tabs-mode nil)
  (setq-local font-lock-defaults (list asm-mode--font-lock-keywords)))

;;;###autoload
(add-to-list 'auto-mode-alist
             (cons (rx (or ".asm" ".s") eos) #'asm-mode))

没测试过,可以照着Emacs自带的asm-mode.el修改得到。

1 个赞

这个不是asm文件。。

是 gdb 里的buffer。通过 (gdb-display-disassembly-buffer) 调出来的。

修改主题字体颜色似乎可以。

接下来对地址(0x开头的),汇编指令等等 分别设置不同的颜色就行了吧。