|
|
|
/**
|
|
|
|
* Forth heap and compile memory
|
|
|
|
*
|
|
|
|
* Created on 2021/11/13.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef FORTH_FH_MEM_H
|
|
|
|
#define FORTH_FH_MEM_H
|
|
|
|
|
|
|
|
void fh_fill_input_buffer(struct fh_thread_s *fh, const char *data, size_t num);
|
|
|
|
|
|
|
|
void fh_align(struct fh_thread_s *fh);
|
|
|
|
|
|
|
|
void fh_setbase(struct fh_thread_s *fh, uint32_t base);
|
|
|
|
|
|
|
|
enum fh_error fh_fetch(struct fh_thread_s *fh, uint32_t addr, uint32_t *dst);
|
|
|
|
|
|
|
|
enum fh_error fh_fetch_char(struct fh_thread_s *fh, uint32_t addr, char *dst);
|
|
|
|
|
|
|
|
enum fh_error fh_store(struct fh_thread_s *fh, uint32_t addr, uint32_t val);
|
|
|
|
|
|
|
|
enum fh_error fh_store_char(struct fh_thread_s *fh, uint32_t addr, char val);
|
|
|
|
|
|
|
|
enum fh_error fh_heap_reserve(
|
|
|
|
struct fh_thread_s *fh,
|
|
|
|
size_t len,
|
|
|
|
uint32_t *addr
|
|
|
|
);
|
|
|
|
|
|
|
|
void fh_heap_write(struct fh_thread_s *fh, uint32_t addr, const void *src, uint32_t len);
|
|
|
|
|
|
|
|
enum fh_error fh_heap_put(struct fh_thread_s *fh, const void *src, uint32_t len);
|
|
|
|
|
|
|
|
void fh_heap_copy(struct fh_thread_s *fh, uint32_t addr, uint32_t srcaddr, uint32_t len);
|
|
|
|
|
|
|
|
void fh_heap_copyptr(struct fh_thread_s *fh, uint32_t addr, char *source, uint32_t len);
|
|
|
|
|
|
|
|
enum fh_error fh_put_instr(struct fh_thread_s *fh, enum fh_instruction_kind kind, uint32_t data);
|
|
|
|
|
|
|
|
char *fh_str_at(struct fh_thread_s *fh, uint32_t addr);
|
|
|
|
|
|
|
|
struct fh_instruction_s *fh_instr_at(struct fh_thread_s *fh, uint32_t addr);
|
|
|
|
|
|
|
|
struct fh_word_s *fh_word_at(struct fh_thread_s *fh, uint32_t addr);
|
|
|
|
|
|
|
|
#endif //FORTH_FH_MEM_H
|