--- /dev/null
+#ifndef INCLUDE__BasicBlock_hxx
+#define INCLUDE__BasicBlock_hxx
+
+#include <cassert>
+#include <string>
+#include <sstream>
+
+class BasicBlock {
+public:
+ BasicBlock() {
+ next_blocks[0] = 0;
+ next_blocks[1] = 0;
+ }
+
+ uint64_t getStartAddress() const {
+ return start_address;
+ }
+
+ uint64_t getEndAddress() const {
+ return end_address;
+ }
+
+ uint64_t getNextBlock(size_t index) const {
+ assert(index < 2);
+ return next_blocks[index];
+ }
+
+ void setNextBlock(size_t index, uint64_t address) {
+ assert(index < 2);
+ next_blocks[index] = address;
+ }
+
+ void setStartAddress(uint64_t address) {
+ start_address = address;
+ }
+
+ void setEndAddress(uint64_t address) {
+ end_address = address;
+ }
+
+ std::string getName() {
+ std::stringstream s;
+ s << "BLOCK_" << std::hex << start_address << '_' << end_address;
+ return s.str();
+ }
+
+private:
+ uint64_t start_address;
+ uint64_t end_address;
+
+ uint64_t next_blocks[2];
+};
+
+#endif