asm: implement assembler output file writing
This commit is contained in:
@@ -6,23 +6,46 @@
|
||||
|
||||
struct assembler_scope_type;
|
||||
|
||||
typedef size_t extended_data_key;
|
||||
|
||||
struct assembler_scope {
|
||||
enum ivy_assembler_scope_type s_type;
|
||||
unsigned long s_attrib[__IVY_ASM_ATTRIB_COUNT];
|
||||
struct assembler_scope_type *s_ops;
|
||||
size_t s_start_offset;
|
||||
};
|
||||
|
||||
struct assembler_scope_type {
|
||||
size_t s_scope_size;
|
||||
|
||||
enum ivy_status(*s_init_scope)(struct ivy_assembler *, struct assembler_scope *);
|
||||
enum ivy_status(*s_finish_scope)(struct ivy_assembler *, struct assembler_scope *);
|
||||
enum ivy_status(*s_init_scope)(
|
||||
struct ivy_assembler *,
|
||||
struct assembler_scope *,
|
||||
const ivy_assembler_attrib_table);
|
||||
|
||||
enum ivy_status(*s_put_string)(struct ivy_assembler *, struct assembler_scope *, long, const char *);
|
||||
enum ivy_status(*s_put_ident)(struct ivy_assembler *, struct assembler_scope *, long, const char *);
|
||||
enum ivy_status(*s_put_atom)(struct ivy_assembler *, struct assembler_scope *, long, const char *);
|
||||
enum ivy_status(*s_put_selector)(struct ivy_assembler *, struct assembler_scope *, long, const struct ivy_selector *);
|
||||
enum ivy_status(*s_put_mvar)(struct ivy_assembler *, struct assembler_scope *, long, const char *);
|
||||
enum ivy_status(*s_put_instr)(struct ivy_assembler *, struct assembler_scope *, const struct ivy_instr *);
|
||||
enum ivy_status(*s_finish_scope)(
|
||||
struct ivy_assembler *,
|
||||
struct assembler_scope *);
|
||||
|
||||
enum ivy_status(*s_put_pval)(struct ivy_assembler *,
|
||||
struct assembler_scope *,
|
||||
enum ivy_assembler_pval_type,
|
||||
unsigned long,
|
||||
const void *);
|
||||
|
||||
enum ivy_status(*s_put_xval)(
|
||||
struct ivy_assembler *,
|
||||
struct assembler_scope *,
|
||||
enum ivy_assembler_xval_type,
|
||||
const ivy_assembler_attrib_table);
|
||||
|
||||
enum ivy_status(*s_put_instr)(
|
||||
struct ivy_assembler *,
|
||||
struct assembler_scope *,
|
||||
const struct ivy_instr *);
|
||||
};
|
||||
|
||||
extern size_t assembler_write_data(struct ivy_assembler *as, const void *p, size_t len);
|
||||
extern extended_data_key assembler_write_extended_data(struct ivy_assembler *as, const void *p, size_t len);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user