lstlisting:用匹配的颜色框出编号的变量

lstlisting:用匹配的颜色框出编号的变量

是否可以匹配以 为前缀的数字,例如%变量%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}

输出:

在此处输入图片描述

相关内容