⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elf.h

📁 一个mips虚拟机非常好代码,使用C++来编写的,希望大家多学学,
💻 H
字号:
#ifndef elf_h_included#define elf_h_included/*	32-bit ELF header	--------------------------------------------------------------	I assume 32 bit ints, 16 bit shorts and 8 bit characters.*//* Constants */#define EI_MAG0         0               /* e_ident[] indexes */#define EI_MAG1         1#define EI_MAG2         2#define EI_MAG3         3#define EI_CLASS        4#define EI_DATA         5#define EI_VERSION      6#define EI_PAD          7#define ELFMAG0         0x7f            /* EI_MAG */#define ELFMAG1         'E'#define ELFMAG2         'L'#define ELFMAG3         'F'#define ELFMAG          "\177ELF"#define SELFMAG         4#define ELFCLASSNONE    0               /* EI_CLASS */#define ELFCLASS32      1#define ELFCLASS64      2#define ELFCLASSNUM     3#define ELFDATANONE     0               /* EI_DATA */#define ELFDATA2LSB     1#define ELFDATA2MSB     2#define ELFDATANUM      3#define ET_NONE         0               /* e_type */#define ET_REL          1#define ET_EXEC         2#define ET_DYN          3#define ET_CORE         4#define ET_NUM          5#define ET_LOPROC       0xff00          /* processor specific range */#define ET_HIPROC       0xffff#define EM_NONE         0               /* e_machine */#define EM_M32          1               /* AT&T WE 32100 */#define EM_SPARC        2               /* Sun SPARC */#define EM_386          3               /* Intel 80386 */#define EM_68K          4               /* Motorola 68000 */#define EM_88K          5               /* Motorola 88000 */#define EM_486          6               /* Intel 80486 */#define EM_860          7               /* Intel i860 */#define EM_MIPS         8               /* Mips R2000 */#define EM_S370         9               /* Amdhal       */#define EM_NUM          10#define EV_NONE         0               /* e_version, EI_VERSION */#define EV_CURRENT      1#define EV_NUM          2#define EF_MIPS_NOREORDER       0x00000001#define EF_MIPS_OPSEX           EF_MIPS_NOREORDER#define EF_MIPS_PIC             0x00000002#define EF_MIPS_CPIC            0x00000004#define EF_MIPS_XGOT            0x00000008#define EF_MIPS_64BIT_WHIRL     0x00000010#define EF_MIPS_ABI2            0x00000020 #define EF_MIPS_ARCH            0xf0000000#define EF_MIPS_ARCH_1          0x00000000#define EF_MIPS_ARCH_2          0x10000000#define EF_MIPS_ARCH_3          0x20000000#define EF_MIPS_ARCH_4          0x30000000#define PT_NULL         0               /* p_type */#define PT_LOAD         1#define PT_DYNAMIC      2#define PT_INTERP       3#define PT_NOTE         4#define PT_SHLIB        5#define PT_PHDR         6#define PT_NUM          7#define PT_LOPROC       0x70000000      /* processor specific range */#define PT_HIPROC       0x7fffffff#define PF_R            0x4             /* p_flags */#define PF_W            0x2#define PF_X            0x1#define SHT_NULL        0               /* sh_type */#define SHT_PROGBITS    1#define SHT_SYMTAB      2#define SHT_STRTAB      3#define SHT_RELA        4#define SHT_HASH        5#define SHT_DYNAMIC     6#define SHT_NOTE        7#define SHT_NOBITS      8#define SHT_REL         9#define SHT_SHLIB       10#define SHT_DYNSYM      11#define SHT_NUM         12#define SHT_LOUSER      0x80000000#define SHT_HIUSER      0xffffffff#define SHT_LOPROC      0x70000000      /* processor specific range */#define SHT_HIPROC      0x7fffffff#define SHF_WRITE       0x1             /* sh_flags */#define SHF_ALLOC       0x2#define SHF_EXECINSTR   0x4#define SHF_MASKPROC    0xf0000000      /* processor specific values */#define SHN_UNDEF       0               /* special section numbers */#define SHN_LORESERVE   0xff00#define SHN_ABS         0xfff1#define SHN_COMMON      0xfff2#define SHN_HIRESERVE   0xffff#define SHN_LOPROC      0xff00          /* processor specific range */#define SHN_HIPROC      0xff1f#define EI_NIDENT       16/* Elf types */typedef unsigned int   Elf32_Addr;typedef unsigned short Elf32_Half;typedef unsigned int   Elf32_Off;typedef int            Elf32_Sword;typedef unsigned int   Elf32_Word;typedef unsigned char  Elf32_Byte;     typedef unsigned short Elf32_Section;  /* Elf header */typedef struct {        unsigned char   e_ident[EI_NIDENT];     /* ident bytes */        Elf32_Half      e_type;                 /* file type */        Elf32_Half      e_machine;              /* target machine */        Elf32_Word      e_version;              /* file version */        Elf32_Addr      e_entry;                /* start address */        Elf32_Off       e_phoff;                /* phdr file offset */        Elf32_Off       e_shoff;                /* shdr file offset */        Elf32_Word      e_flags;                /* file flags */        Elf32_Half      e_ehsize;               /* sizeof ehdr */        Elf32_Half      e_phentsize;            /* sizeof phdr */        Elf32_Half      e_phnum;                /* number phdrs */        Elf32_Half      e_shentsize;            /* sizeof shdr */        Elf32_Half      e_shnum;                /* number shdrs */        Elf32_Half      e_shstrndx;             /* shdr string index */} Elf32_Ehdr;/* Program header */typedef struct {        Elf32_Word      p_type;         /* entry type */        Elf32_Off       p_offset;       /* file offset */        Elf32_Addr      p_vaddr;        /* virtual address */        Elf32_Addr      p_paddr;        /* physical address */        Elf32_Word      p_filesz;       /* file size */        Elf32_Word      p_memsz;        /* memory size */        Elf32_Word      p_flags;        /* entry flags */        Elf32_Word      p_align;        /* memory/file alignment */} Elf32_Phdr;/* Section header */typedef struct {        Elf32_Word      sh_name;        /* section name */        Elf32_Word      sh_type;        /* SHT_... */        Elf32_Word      sh_flags;       /* SHF_... */        Elf32_Addr      sh_addr;        /* virtual address */        Elf32_Off       sh_offset;      /* file offset */        Elf32_Word      sh_size;        /* section size */        Elf32_Word      sh_link;        /* misc info */        Elf32_Word      sh_info;        /* misc info */        Elf32_Word      sh_addralign;   /* memory alignment */        Elf32_Word      sh_entsize;     /* entry size if table */} Elf32_Shdr;#endif /* elf_h_included */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -