diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-06-03 03:15:59 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-06-03 03:15:59 +0330 |
commit | db6239342ffc6385a0c7659c8a01d2800a57da2c (patch) | |
tree | 1fb22c8d68d5e6670868c99c9cb1639591742f91 /src/backend | |
parent | db42bd4d0064d481d320a0ab2519966419feefec (diff) |
first version of code insertion
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/bba.h | 93 |
1 files changed, 72 insertions, 21 deletions
diff --git a/src/backend/bba.h b/src/backend/bba.h index 98c081e..2e77d78 100644 --- a/src/backend/bba.h +++ b/src/backend/bba.h @@ -5,34 +5,85 @@ typedef enum BBAOperation { BBA_OPERATION_ASSIGN, - BBA_OPERATION_CAST, - // BBA_OPERATION_TYPE_OF, - // BBA_OPERATION_IMPORT, - // BBA_OPERATION_IS_COMPTIME, - BBA_OPERATION_STACK_ALLOC, - BBA_OPERATION_HEAP_ALLOC, - BBA_OPERATION_NEG, - BBA_OPERATION_ADD, - BBA_OPERATION_SUB, - BBA_OPERATION_MUL, - BBA_OPERATION_DIV, - BBA_OPERATION_MOD, - BBA_OPERATION_EQUAL, - BBA_OPERATION_NOT_EQUAL, - BBA_OPERATION_GREATER, - BBA_OPERATION_SMALLER, - BBA_OPERATION_GREATER_OR_EQUAL, - BBA_OPERATION_SMALLER_OR_EQUAL, - BBA_OPERATION_PUTC, + BBA_OPERATOR_CAST, + BBA_OPERATOR_TYPE_OF, + BBA_OPERATOR_SIZE_OF, + BBA_OPERATOR_IMPORT, + BBA_OPERATOR_IS_COMPTIME, + BBA_OPERATOR_STACK_ALLOC, + BBA_OPERATOR_HEAP_ALLOC, + BBA_OPERATOR_NEG, + BBA_OPERATOR_ADD, + BBA_OPERATOR_SUB, + BBA_OPERATOR_MUL, + BBA_OPERATOR_DIV, + BBA_OPERATOR_MOD, + BBA_OPERATOR_EQUAL, + BBA_OPERATOR_NOT_EQUAL, + BBA_OPERATOR_GREATER, + BBA_OPERATOR_SMALLER, + BBA_OPERATOR_GREATER_OR_EQUAL, + BBA_OPERATOR_SMALLER_OR_EQUAL, + BBA_OPERATOR_PUTC, + BBA_OPERATOR_C_LIBRARY, + BBA_OPERATOR_C_FUNCTION, + BBA_OPERATOR_BITWISE_NOT, + BBA_OPERATOR_BITWISE_AND, + BBA_OPERATOR_BITWISE_XOR, + BBA_OPERATOR_BITWISE_OR, + BBA_OPERATOR_SHIFT_LEFT, + BBA_OPERATOR_SHIFT_RIGHT, BBA_OPERATION_CALL, -}BBAOperation; -typedef struct BBAInstruction { + BBA_OPERATOR_CONST_I8, + BBA_OPERATOR_CONST_U8, + BBA_OPERATOR_CONST_I16, + BBA_OPERATOR_CONST_U16, + BBA_OPERATOR_CONST_I32, + BBA_OPERATOR_CONST_U32, + BBA_OPERATOR_CONST_I64, + BBA_OPERATOR_CONST_U64, + +#ifdef FLOAT_16_SUPPORT + BBA_OPERATOR_CONST_F16, +#endif + BBA_OPERATOR_CONST_F32, + BBA_OPERATOR_CONST_F64, + BBA_OPERATOR_CONST_F128, +} BBAOperation; + +typedef union BBAInstructionValue { + struct BBAInstruction *instruction; + u8 u8; + i8 i8; + u16 u16; + i16 i16; + u32 u32; + i32 i32; + u64 u64; + i64 i64; + +#ifdef FLOAT_16_SUPPORT + f16 f16; +#endif + f32 f32; + f64 f64; + f128 f128; +} BBAInstructionValue; + +typedef struct BBAInstruction { + BBAOperation operator; + BBAInstructionValue *value; + size_t value_size; } BBAInstruction; typedef struct BBABlock { + BBAInstructionValue *params; + size_t params_size; + BBAInstruction **instructions; + size_t instructions_size; } BBABlock; typedef struct BBA { |