From 1f06e090d2fd99e2f4acd487a069cdbe36dcc6ec Mon Sep 17 00:00:00 2001 From: sad-dev <55233728+sad-dev@users.noreply.github.com> Date: Tue, 12 Mar 2024 11:02:57 +0800 Subject: [PATCH] Add helper method PcodeSyntaxTree.locRange(Address min, Address max) --- .../ghidra/program/model/pcode/PcodeSyntaxTree.java | 10 ++++++++++ .../java/ghidra/program/model/pcode/VarnodeBank.java | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java index 6a362e5ca4..f51e078e51 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java @@ -173,6 +173,16 @@ public class PcodeSyntaxTree implements PcodeFactory { return vbank.locRange(addr); } + /** + * return all Varnodes that start at a given Address + * @param min -- Minimum Address of Varnodes + * @param max -- Maximum Address of Varnodes + * @return -- Iterator to Varnodes + */ + public Iterator getVarnodes(Address min, Address max) { + return vbank.locRange(min, max); + } + /** * return all Varnodes of a given size that start at a given Address * @param sz -- Size of Varnodes diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/VarnodeBank.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/VarnodeBank.java index 5085b16618..ec520160be 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/VarnodeBank.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/VarnodeBank.java @@ -223,6 +223,13 @@ public class VarnodeBank { searchvn2.setInput(true); return locTree.subSet(searchvn1,searchvn2).iterator(); } + + public Iterator locRange(Address min, Address max) { + VarnodeAST searchvn1 = new VarnodeAST(min,0,0); + searchvn1.setInput(true); + VarnodeAST searchvn2 = new VarnodeAST(max, Integer.MAX_VALUE,0); + return locTree.subSet(searchvn1,searchvn2).iterator(); + } public Iterator locRange(int sz,Address addr) { VarnodeAST searchvn1 = new VarnodeAST(addr,sz,0);