smcc/lib/rt/rt_alloc.h
ZZY 05c637e594 refactor: 重构前端代码并添加日志功能
- 重命名和重构了多个文件,包括 lexer、parser 和 AST 相关代码
- 添加了日志功能,使用 LOG_* 宏替代原有的 error 和 warn 函数
- 优化了错误处理和内存分配方式
- 调整了代码结构,提高了模块化和可读性
2025-03-19 12:22:55 +08:00

37 lines
905 B
C

#ifndef __SMCC_RT_ALLOC_H__
#define __SMCC_RT_ALLOC_H__
#include "std/rt_api_def.h"
// Simple or Static Allocator
void* salloc_alloc(int size);
void* salloc_realloc(void* ptr, int size);
void salloc_free(void* ptr);
typedef struct fixed_alloc {
void* page_list;
void* free_list;
int block_size;
int blocks_per_page;
} fixed_alloc_t;
void falloc_init(fixed_alloc_t* fa, int fixed_size, int init_size);
void* falloc_alloc(fixed_alloc_t* fa);
void falloc_free(fixed_alloc_t* fa, void* ptr);
void falloc_destroy(fixed_alloc_t* fa);
typedef struct long_block {
struct long_block* next;
int used;
} long_block_t;
typedef struct long_alloc {
long_block_t* current;
int block_size;
} long_alloc_t;
void lalloc_init(long_alloc_t* la);
void* lalloc_alloc(long_alloc_t* la, int size);
void lalloc_free(long_alloc_t* la, void* ptr);
void lalloc_destroy(long_alloc_t* la);
#endif