diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/ListingHighlightProvider.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/ListingHighlightProvider.java index 3f9d072a36..b4eb2ad3a8 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/ListingHighlightProvider.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/ListingHighlightProvider.java @@ -215,12 +215,19 @@ public class ListingHighlightProvider List registerNames = gatherRegisterNames(new ArrayList(), register); - StringBuilder buffy = new StringBuilder(); for (String s : highlightStrings) { if (s != null) { - buffy.append("\\Q").append(s).append("\\E|"); + registerNames.add(s); } } + + // Prioritize exact register matches by ensuring that the longest register name gets + // matched first + Collections.sort(registerNames, (a, b) -> { + return Integer.valueOf(b.length()).compareTo(Integer.valueOf(a.length())); + }); + + StringBuilder buffy = new StringBuilder(); for (String name : registerNames) { buffy.append("\\Q").append(name).append("\\E|"); }