是否可以匹配以 为前缀的数字,例如%
变量%101
,并将该数字的每个出现位置放在颜色匹配的框中?我试图让读者更容易理解编号变量的用法。
llvm.tex:
\lstinputlisting[language=llvm,style=nasm]{IR/voidandlatecasts.ll}
IR/voidandlatecasts.ll:
%17 = tail call i8* @kvmalloc_node(i64 1808, i32 3520, i32 %16) #15
%18 = bitcast i8* %17 to %struct.mapped_device*
; ...
%101 = getelementptr inbounds i8, i8* %17, i64 224
%102 = bitcast i8* %101 to void (%struct.work_struct*)**
store void (%struct.work_struct*)* @dm_wq_work, void (%struct.work_struct*)** %102, align 8
其结果是:
例如:存储指令使用%102
上面一行定义的变量。变量%102
使用%101
上面一行定义的变量。我的目标是使其更加明显,并用相同的颜色突出显示这些变量,以便人们可以更好地看到定义和用法的位置。
用匹配颜色的框框将变量框起来的想法是一个好主意。我正在寻找任何可能的方法,至少从代码清单中突出显示它。
答案1
和 moredelim=**[is][\color{blue}]{&}{&}
代码:
\documentclass[12pt,a4paper]{report}
\usepackage{geometry}
\usepackage{xcolor}
\usepackage{listings}
\definecolor{comment}{RGB}{0,128,0} % dark green
\definecolor{string}{RGB}{255,0,0} % red
\definecolor{instruction}{RGB}{0,0,255} % blue
\definecolor{directive}{RGB}{128,0,128} % purple
\definecolor{register}{RGB}{128,0,0} % dark red
\lstdefinestyle{nasm}{
commentstyle=\color{comment},
stringstyle=\color{string},
keywordstyle=\color{instruction},
keywordstyle=[2]\color{directive},
keywordstyle=[3]\color{register},
basicstyle=\footnotesize\ttfamily,
numbers=left,
numberstyle=\tiny,
numbersep=5pt,
frame=lines,
breaklines=true,
postbreak=\raisebox{0ex}[0ex][0ex]{\space\ensuremath{\hookrightarrow}},
showstringspaces=false,
upquote=true,
tabsize=8,
linewidth=10.7cm,
moredelim=**[is][\color{blue}]{&}{&}
}
\begin{document}
\begin{lstlisting}[language=llvm,style=nasm]
&%17& = tail call i8* @kvmalloc_node(i64 1808, i32 3520, i32 %16) #15
&%18& = bitcast i8* %17 to %struct.mapped_device*
; ...
&%101& = getelementptr inbounds i8, i8* %17, i64 224
&%102& = bitcast i8* %101 to void (%struct. work_struct*)**
store void (%struct.work_struct*)* @dm_wq_work, void (%struct.work_struct*)** %102, align 8
\end{lstlisting}
\end{document}
输出: