我正在写一篇包含大量 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}
看起来有点像:
(我刚刚添加了列出的说明这里并且只有部分寄存器,您可以轻松添加更多您使用的寄存器。