Bug fix: check if vm exists
[avr-sim.git] / Analyzer.h
blobb8b365dc57e7b9761185a34c143b351f58b8e468
1 #ifndef AVR_ANALYZER_H
2 #define AVR_ANALYZER_H
4 #include "Types.h"
6 namespace avr {
8 class Core;
9 class Analyzer {
10 public:
11 Analyzer(Core *core) : core(core) {}
12 virtual ~Analyzer() {}
14 public:
15 virtual void reset(unsigned int type) = 0;
16 virtual void step(dword address, lword ticks) = 0;
18 public:
19 virtual void readRegister(int r, byte val) = 0;
20 virtual void writeRegister(int r, byte val) = 0;
21 virtual void readStatus(byte val) = 0;
22 virtual void writeStatus(byte val) = 0;
23 virtual void readIORegister(int r, byte val) = 0;
24 virtual void writeIORegister(int r, byte val) = 0;
25 virtual void readByte(unsigned int addr, byte val) = 0;
26 virtual void writeByte(unsigned int addr, byte val) = 0;
27 virtual void readFlash(unsigned int addr, byte val) = 0;
28 virtual void writeFlash(unsigned int addr, word data) = 0;
29 virtual void fetchOperand(word val) = 0;
31 public:
32 virtual void push(byte val) = 0;
33 virtual void pop(byte val) = 0;
34 virtual void jump(sbyte offset, bool push) = 0;
35 virtual void skip() = 0;
36 virtual void call(dword address, bool push) = 0;
37 virtual void ret(bool interrupt) = 0;
39 public:
40 virtual void sleep(unsigned int mode) = 0;
41 virtual void interrupt(unsigned int vector, unsigned int addr) = 0;
43 protected:
44 Core *core;
47 class AnalyzerFactory {
48 public:
49 virtual ~AnalyzerFactory() {}
51 public:
52 virtual Analyzer *newAnalyzer(Core *core) = 0;
55 template <class Analyzer>
56 class GenAnalyzerFactory : public AnalyzerFactory {
57 public:
58 Analyzer *newAnalyzer(Core *core) {
59 return new Analyzer(core);
65 #endif /*AVR_ANALYZER_H*/