asm: assembler: implement label creation and resolution

This commit is contained in:
2025-05-14 16:27:22 +01:00
parent 6399022cb3
commit a35ae51b2f
4 changed files with 252 additions and 30 deletions

View File

@@ -13,6 +13,7 @@ typedef uint32_t ivy_extended_data_key;
struct ivy_selector;
struct ivy_instr;
struct ivy_asm_token;
struct ivy_assembler;
@@ -62,6 +63,7 @@ typedef unsigned long long ivy_assembler_attrib_table[__IVY_ASM_ATTRIB_COUNT];
IVY_API enum ivy_status ivy_assembler_create(FILE *out, struct ivy_assembler **as);
IVY_API enum ivy_status ivy_assembler_finish(struct ivy_assembler *as);
IVY_API size_t ivy_assembler_get_ptr(const struct ivy_assembler *as);
IVY_API enum ivy_status ivy_assembler_begin_scope(
struct ivy_assembler *as, enum ivy_assembler_scope_type type,
@@ -77,4 +79,11 @@ IVY_API enum ivy_status ivy_assembler_put_xval(
IVY_API enum ivy_status ivy_assembler_put_instr(
struct ivy_assembler *as, const struct ivy_instr *i);
IVY_API enum ivy_status ivy_assembler_put_label(
struct ivy_assembler *as, const struct ivy_asm_token *label_name,
size_t label_offset);
IVY_API enum ivy_status ivy_assembler_put_label_ref(
struct ivy_assembler *as, const struct ivy_asm_token *label_name,
size_t ref_offset);
#endif