- Disassembler(const std::string& filename) {}
- virtual ~Disassembler() {}
-
- void getSymbols();
- uint64_t entryAddress();
- virtual BasicBlock * getBasicBlock(uint64_t address) = 0;
-
- virtual void forEachFunction(std::function<void (uint64_t, Function*)> callback) = 0;
- virtual void printEachInstruction(uint64_t start, uint64_t end, std::function<void (const std::string&)> fun) = 0;
-protected:
- virtual bool isFunctionCall(uint64_t address) = 0;
- virtual bool isJump(uint64_t address) = 0;
+ Disassembler() {}
+ virtual ~Disassembler() {}
+
+ virtual void getSymbols() = 0;
+ virtual uint64_t entryAddress() = 0;
+
+#ifndef SWIG
+public slots:
+#endif
+ virtual void start() = 0;
+ virtual Function * disassembleFunctionAt(uint64_t address) {
+ return disassembleFunctionAt(address, "");
+ }
+ virtual Function * disassembleFunctionAt(uint64_t address,
+ const std::string& name) = 0;
+
+ // TODO: Should use move semantics!
+ virtual std::vector<Instruction> getInstructions(const BasicBlock* block) = 0;