Files
ivy/asm/assembler/assembler.h

51 lines
1.2 KiB
C
Raw Normal View History

#ifndef _ASSEMBLER_ASSEMBLER_H_
#define _ASSEMBLER_ASSEMBLER_H_
#include <ivy/asm/assembler.h>
#include <stddef.h>
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 *,
const ivy_assembler_attrib_table);
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