OpenCores
URL https://opencores.org/ocsvn/lxp32/lxp32/trunk

Subversion Repositories lxp32

[/] [lxp32/] [trunk/] [tools/] [src/] [lxp32asm/] [linkableobject.h] - Diff between revs 2 and 6

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 2 Rev 6
Line 18... Line 18...
 
 
class LinkableObject {
class LinkableObject {
public:
public:
        typedef unsigned char Byte;
        typedef unsigned char Byte;
        typedef std::uint32_t Word;
        typedef std::uint32_t Word;
 
        typedef std::int_least64_t Integer;
 
 
 
        enum SymbolType {Unknown,Local,Exported,Imported};
 
        enum RefType {Regular,Short};
 
 
        enum SymbolType {Unknown,Local,External};
 
        struct Reference {
        struct Reference {
                std::string source;
                std::string source;
                int line;
                int line;
                Word rva;
                Word rva;
 
                Integer offset;
 
                RefType type;
        };
        };
        struct SymbolData {
        struct SymbolData {
                SymbolType type=Unknown;
                SymbolType type=Unknown;
                Word rva;
                Word rva;
                std::vector<Reference> refs;
                std::vector<Reference> refs;
        };
        };
 
 
        typedef std::map<std::string,SymbolData> SymbolTable;
        typedef std::map<std::string,SymbolData> SymbolTable;
 
 
private:
private:
        std::string _name;
        std::string _name;
        std::vector<Byte> _code;
        std::vector<Byte> _code;
Line 59... Line 65...
        Word addPadding(std::size_t size=sizeof(LinkableObject::Word));
        Word addPadding(std::size_t size=sizeof(LinkableObject::Word));
 
 
        Word getWord(Word rva) const;
        Word getWord(Word rva) const;
        void replaceWord(Word rva,Word value);
        void replaceWord(Word rva,Word value);
 
 
        void addLocalSymbol(const std::string &name,Word rva);
        void addSymbol(const std::string &name,Word rva);
        void addExternalSymbol(const std::string &name);
        void addImportedSymbol(const std::string &name);
        void addReference(const std::string &symbolName,const std::string &source,int line,Word rva);
        void exportSymbol(const std::string &name);
 
        void addReference(const std::string &symbolName,const Reference &ref);
 
 
        SymbolData &symbol(const std::string &name);
        SymbolData &symbol(const std::string &name);
        const SymbolData &symbol(const std::string &name) const;
        const SymbolData &symbol(const std::string &name) const;
        const SymbolTable &symbols() const;
        const SymbolTable &symbols() const;
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.