diff options
author | Mitya Selivanov <automainint@guattari.tech> | 2024-11-24 04:24:57 +0100 |
---|---|---|
committer | Mitya Selivanov <automainint@guattari.tech> | 2024-11-24 04:24:57 +0100 |
commit | 46a3f595a4f86acbf6abc47e177327416ff498a6 (patch) | |
tree | 65cd6ab0b5837f3c010d9332d7fd4aad8035dc43 | |
parent | fbcd3f6f87cefd4cd621ab4c5cb518f410189e53 (diff) | |
download | bxgen-46a3f595a4f86acbf6abc47e177327416ff498a6.zip |
Update comments
-rwxr-xr-x | bxgen.c | 76 |
1 files changed, 19 insertions, 57 deletions
@@ -131,7 +131,6 @@ exit $? # */ // Types // // ================================================================ - #ifndef TYPES_HEADER_GUARD_ #define TYPES_HEADER_GUARD_ @@ -150,22 +149,14 @@ typedef float f32; typedef double f64; #endif // TYPES_HEADER_GUARD_ - // ================================================================ // -// Version +// IR data declarations // // ================================================================ - #ifndef BXGEN_HEADER_GUARD_ #define BXGEN_HEADER_GUARD_ -// ================================================================ -// -// IR data declarations -// -// ================================================================ - enum { // Log level ERROR = 1, @@ -423,18 +414,11 @@ typedef struct { Chunk_Handle rels; Chunk_Handle output_buffer; } Linker_Context; - // ================================================================ // // API declarations // // ================================================================ - -#ifdef __cplusplus -extern "C" { -#endif - -// ================================================================ // // Hooks // @@ -442,14 +426,19 @@ extern "C" { // Shoud be implemented on the user side. // See: `* Helper procedures` // +// ================================================================ +#ifdef __cplusplus +extern "C" { +#endif + void dispatch_assert(b8 condition, c8 *message, u32 line, c8 *file); void dispatch_log(i32 log_level, u32 line, c8 *file, c8 *format, ...); void dispatch_io(u16 op, i64 *id, i64 *size, void *data, void *user_data); - // ================================================================ // // Main API // +// ================================================================ i64 pool_add(Pool *pool, Entity data); void pool_remove(Pool *pool, i64 entity, u16 type); @@ -491,11 +480,11 @@ i64 io_tell(i64 f, void *user_data); i64 io_read(i64 f, i64 size, void *data, void *user_data); i64 io_write(i64 f, i64 size, void *data, void *user_data); void io_chmod_exe(i64 f, void *user_data); - // ================================================================ // // Helpers API // +// ================================================================ #ifndef DISABLE_HELPERS i64 n_ref(i64 proc, i64 node); @@ -531,29 +520,24 @@ c8 * l_find(c8 *name, b8 silent); #define N_RET(proc, ...) n_ret((proc), ARGS(__VA_ARGS__)) #endif -// ================================================================ #ifdef __cplusplus } #endif #endif // BXGEN_HEADER_GUARD_ - // ================================================================ // // IMPLEMENTATION // // ================================================================ - -#ifndef BXGEN_HEADER -#ifndef BXGEN_IMPL_GUARD_ -#define BXGEN_IMPL_GUARD_ - -// ================================================================ // // Compilation options // // ================================================================ +#ifndef BXGEN_HEADER +#ifndef BXGEN_IMPL_GUARD_ +#define BXGEN_IMPL_GUARD_ #ifdef __cplusplus #error Implementation code should be compiled with a C compiler! @@ -580,13 +564,11 @@ c8 * l_find(c8 *name, b8 silent); #endif #define VERSION "dev" - // ================================================================ // // * Basic utilities // // ================================================================ - #ifndef NULL #define NULL ((void *) 0) #endif @@ -757,13 +739,11 @@ u64 u64_from_dec_str(c8 *s, c8 *s_end) { LAX(s == s_end || *s == ' ' || *s == '\0', "Parsing failed"); return x; } - // ================================================================ // -// * Chunk table +// * Chunk table and entity pool // // ================================================================ - Chunk_Handle chunk_add(Pool *pool, i64 size, void *data) { CHECK(pool != NULL, "Invalid arguments", (Chunk_Handle) {0}); CHECK(size > 0, "Invalid arguments", (Chunk_Handle) {0}); @@ -855,15 +835,6 @@ b8 entity_enabled(Pool *pool, i64 id) { return entities[id].is_enabled; } -// ================================================================ -// -// * Semantic graph -// -// ================================================================ - -// IR building procs -// - i64 pool_add(Pool *pool, Entity data) { CHECK(pool != NULL && pool->data != NULL, "Invalid arguments", UNDEFINED); @@ -898,7 +869,11 @@ void pool_remove(Pool *pool, i64 entity, u16 type) { entities[entity] = (Entity) {0}; } - +// ================================================================ +// +// * Semantic graph +// +// ================================================================ Node *node_by_id(Pool *pool, i64 id) { CHECK(pool != NULL && pool->data != NULL, "Invalid arguments", NULL); @@ -1274,7 +1249,6 @@ void unit_set_entry_point(Pool *pool, i64 unit, i64 entry_point_proc) { u->entry_point_index = p->index_in_unit; } - // ================================================================ // // * Serialization @@ -1293,7 +1267,6 @@ void unit_set_entry_point(Pool *pool, i64 unit, i64 entry_point_proc) { // qword = 8 bytes // // ================================================================ - enum { BIT_LE = 0, BIT_BE = 1, @@ -1587,7 +1560,6 @@ void write_f64(u32 ordering, f64 x, void *v, void *v_end) { // Shortcuts #define HO host_data_ordering() - // ================================================================ // // * Code generation and linking @@ -1629,7 +1601,6 @@ void write_f64(u32 ordering, f64 x, void *v, void *v_end) { // TODO Experiment with mapping several p_vaddr into one p_paddr. // // ================================================================ - enum { OS_Unknown = 0, OS_Unix, @@ -1915,12 +1886,11 @@ typedef struct { u32 type; i64 addent; } Elf_Relx_Entry; - // ================================================================ // // Codegen // - +// ================================================================ void codegen_add_rel(Pool *pool, Codegen_Context *codegen, Codegen_Rel_Entry rel) { CHECK(pool != NULL, "Invalid arguments",); CHECK(codegen != NULL, "Invalid arguments",); @@ -2301,7 +2271,6 @@ void x86_64_emit_node( break; case 2: - // FAIL("Not implemented",); // ebx write_u8(LE, 0x89, begin, end); // mov ecx @@ -2441,7 +2410,6 @@ void x86_64_emit_node( break; case 2: - // FAIL("Not implemented",); // ebx write_u8(LE, 0x89, begin, end); // mov edx @@ -2516,7 +2484,6 @@ void x86_64_emit_node( break; case 3: - // FAIL("Not implemented",); // ecx write_u8(LE, 0x01, begin, end); // add edx @@ -3314,12 +3281,11 @@ void emit_unit(Pool *pool, Codegen_Context *codegen, i64 unit, u16 arch) { emit_proc(pool, codegen, procs[i], arch, context); } } - // ================================================================ // // Linking // - +// ================================================================ void link_add_symbol(Pool *pool, Linker_Context *linker, Link_Sym_Entry sym) { CHECK(pool != NULL, "Invalid arguments",); CHECK(linker != NULL, "Invalid arguments",); @@ -5039,13 +5005,11 @@ i64 io_write(i64 f, i64 size, void *data, void *user_data) { void io_chmod_exe(i64 f, void *user_data) { dispatch_io(IO_CHMOD_EXE, &f, NULL, NULL, user_data); } - // ================================================================ // // * Helper procedures // // ================================================================ - #if HELPERS #include <stdio.h> @@ -5432,13 +5396,11 @@ c8 *l_find(c8 *name, b8 silent) { } #endif - // ================================================================ // // TEST SUITE // // ================================================================ - #if TESTING #if HELPERS |