列表包的 x86-64 汇编语言方言

列表包的 x86-64 汇编语言方言

我正在写一篇包含大量 x86-64 代码清单的论文。不幸的是,列表包本身不支持 x86-64 指令和寄存器名称(与 32 位对应的名称不同)。

是否有人有配置包来支持这一点的代码?

答案1

清单文件描述\lstdefinelanguage宏,可用于定义新语言作为其他语言的扩展。

\documentclass{article}

\usepackage{listings}

\lstdefinelanguage
   [x64]{Assembler}     % add a "x64" dialect of Assembler
   [x86masm]{Assembler} % based on the "x86masm" dialect
   % with these extra keywords:
   {morekeywords={CDQE,CQO,CMPSQ,CMPXCHG16B,JRCXZ,LODSQ,MOVSXD, %
                  POPFQ,PUSHFQ,SCASQ,STOSQ,IRETQ,RDTSCP,SWAPGS, %
                  rax,rdx,rcx,rbx,rsi,rdi,rsp,rbp, %
                  r8,r8d,r8w,r8b,r9,r9d,r9w,r9b, %
                  r10,r10d,r10w,r10b,r11,r11d,r11w,r11b, %
                  r12,r12d,r12w,r12b,r13,r13d,r13w,r13b, %
                  r14,r14d,r14w,r14b,r15,r15d,r15w,r15b}} % etc.

\lstset{language=[x64]Assembler}

\begin{document}
\begin{lstlisting}
  cdqe 1, r8
  push 1
  add rsp, 4
  push 1
\end{lstlisting}
\end{document}

看起来有点像:

上述 LaTeX 的输出

(我刚刚添加了列出的说明这里并且只有部分寄存器,您可以轻松添加更多您使用的寄存器。

相关内容