pureikyubu/SRC/HighLevel/Symbols.h
2020-06-28 16:01:58 +03:00

37 lines
1 KiB
C++

#pragma once
#include <map>
// symbolic entry
struct SYM
{
uint32_t eaddr; // effective address
char* savedName; // symbolic description
void (*routine)(); // associated high-level call
};
// all important variables are here
struct SYMControl
{
std::map<uint32_t, SYM*> symmap;
};
extern SYMControl sym;
// API for emulator
void SYMAddNew(uint32_t addr, const char *name);
void SYMSetHighlevel(const char *symName, void (*routine)());
uint32_t SYMAddress(const char *symName);
char* SYMName(uint32_t symAddr);
char* SYMGetNearestName(uint32_t address, size_t& offset);
void SYMKill();
void SYMList(const char *str="*");
// advanced stuff (dont use it, if you dont know how)
void SYMSetWorkspace(SYMControl *useIt);
void SYMCompareWorkspaces (
SYMControl *source,
SYMControl *dest,
// callback is called when symbol in source wasnt found in dest
void (*DiffCallback)(uint32_t ea, char * name)
);