StupidOS/include/fas.h

140 lines
2.5 KiB
C

#ifndef FAS_H
# define FAS_H 1
# include <stdint.h>
# define FAS_MAGIC 0x1A736166
typedef struct fas_header
{
uint32_t magic;
uint8_t ver_major;
uint8_t ver_minor;
uint16_t length;
uint32_t ifnm_off;
uint32_t ofnm_off;
uint32_t strtab_off;
uint32_t strtab_len;
uint32_t symtab_off;
uint32_t symtab_len;
uint32_t psrc_off;
uint32_t psrc_len;
uint32_t asmdmp_off;
uint32_t asmdmp_len;
uint32_t sectab_off;
uint32_t sectab_len;
uint32_t symref_off;
uint32_t symref_len;
} FAS_Hdr;
# define FAS_SYM_DEF 0x001
# define FAS_SYM_ASM_TIME 0x002
# define FAS_SYM_NOT_FWD_REF 0x004
# define FAS_SYM_USED 0x008
# define FAS_SYM_PRD_USED 0x010
# define FAS_SYM_LPRD_USED 0x020
# define FAS_SYM_PRD_DEF 0x040
# define FAS_SYM_LPRD_DEF 0x080
# define FAS_SYM_OPT_ADJ 0x100
# define FAS_SYM_TWO_CMPLMNT 0x200
# define FAS_SYM_MARKER 0x400
enum fas_symbol_type
{
FAS_ABS,
FAS_REL_SEG,
FAS_REL_32,
FAS_REL_R_32,
FAS_REL_64,
FAS_GOT_32,
FAS_PLT_32,
FAS_PLT_R_32
};
typedef struct fas_symbol
{
uint64_t value;
uint16_t flags;
uint8_t size;
uint8_t type;
uint32_t ext_SIB;
uint16_t pass_ldef;
uint16_t pass_lused;
uint32_t reloc;
uint32_t name_off;
uint32_t psrc_line_off;
} FAS_Sym;
struct fas_psrc_line
{
uint32_t from;
uint32_t lineno;
uint32_t src_off;
uint32_t macro_off;
uint8_t tokens[];
};
enum fas_code
{
FAS_CODE_16 = 16,
FAS_CODE_32 = 32,
FAS_CODE_64 = 64
};
struct fas_asmdmp
{
uint32_t of_off;
uint32_t psrc_line_off;
uint64_t addr;
uint32_t ext_SIB;
uint32_t reloc;
uint8_t type;
uint8_t code;
uint8_t virt;
uint8_t high;
};
enum fas_register
{
FAS_REG_BX = 0x23,
FAS_REG_BP = 0x25,
FAS_REG_SI = 0x26,
FAS_REG_DI = 0x27,
FAS_REG_EAX = 0x40,
FAS_REG_ECX = 0x41,
FAS_REG_EDX = 0x42,
FAS_REG_EBX = 0x43,
FAS_REG_ESP = 0x44,
FAS_REG_EBP = 0x45,
FAS_REG_ESI = 0x46,
FAS_REG_EDI = 0x47,
FAS_REG_R8D = 0x48,
FAS_REG_R9D = 0x49,
FAS_REG_R10D = 0x4A,
FAS_REG_R11D = 0x4B,
FAS_REG_R12D = 0x4C,
FAS_REG_R13D = 0x4D,
FAS_REG_R14D = 0x4E,
FAS_REG_R15D = 0x4F,
FAS_REG_RAX = 0x80,
FAS_REG_RCX = 0x81,
FAS_REG_RDX = 0x82,
FAS_REG_RBX = 0x83,
FAS_REG_RSP = 0x84,
FAS_REG_RBP = 0x85,
FAS_REG_RSI = 0x86,
FAS_REG_RDI = 0x87,
FAS_REG_R8 = 0x88,
FAS_REG_R9 = 0x89,
FAS_REG_R10 = 0x8A,
FAS_REG_R11 = 0x8B,
FAS_REG_R12 = 0x8C,
FAS_REG_R13 = 0x8D,
FAS_REG_R14 = 0x8E,
FAS_REG_R15 = 0x8F,
FAS_REG_EIP = 0x94,
FAS_REG_RIP = 0x98,
};
#endif /* !FAS_H */