control stack merged into data stack

This commit is contained in:
2021-11-15 22:21:26 +01:00
parent 2d30f61387
commit 964aec76c8
5 changed files with 15 additions and 58 deletions
+1 -1
View File
@@ -14,7 +14,7 @@
#define DICT_SIZE 1024
#define HEAP_SIZE (1024*1024)
#define MAXLINE 65535
#define PAD_SIZE 256
#define PAD_OFFSET 340
#define WORDBUF_SIZE 128
#define INPUT_BUFFER_SIZE 256
-14
View File
@@ -124,11 +124,6 @@ struct fh_word_s {
* to a shared pointer if multi-threading and synchronization is added.
*/
struct fh_thread_s {
/** Control stack */
uint32_t control_stack[CONTROL_STACK_DEPTH];
size_t control_stack_top;
size_t control_stack_hwm;
/** Data stack */
uint32_t data_stack[DATA_STACK_DEPTH];
size_t data_stack_top;
@@ -150,15 +145,6 @@ struct fh_thread_s {
struct fh_word_s dict[DICT_SIZE];
uint32_t dict_top;
/** Pad buffer */
uint8_t pad[PAD_SIZE];
/** WORD and pictured output buffer */
uint8_t wordbuf[WORDBUF_SIZE];
/** Input buffer */
uint8_t inbuf[INPUT_BUFFER_SIZE];
uint32_t inbuf_ptr;
/** Forth state */
enum fh_state state;
+12 -6
View File
@@ -9,12 +9,14 @@
enum fh_error ds_roll(struct fh_thread_s *fh, int n);
/** Peek n-th element of data stack */
/** Peek n-th element of data stack, 0=topmost */
enum fh_error ds_peek_n(struct fh_thread_s *fh, uint32_t *out, int n);
/** Peek n-th element of return stack */
/** Peek n-th element of return stack, 0=topmost */
enum fh_error rs_peek_n(struct fh_thread_s *fh, uint32_t *out, int n);
/** Peek n-th element of control stack */
enum fh_error cs_peek_n(struct fh_thread_s *fh, uint32_t *out, int n);
/** Peek n-th element of control stack, 0=topmost */
static inline enum fh_error cs_peek_n(struct fh_thread_s *fh, uint32_t *out, int n) {
return ds_peek_n(fh, out, n);
}
/** Peek top of data stack */
static inline enum fh_error ds_peek(struct fh_thread_s *fh, uint32_t *out)
@@ -36,10 +38,14 @@ static inline enum fh_error cs_peek(struct fh_thread_s *fh, uint32_t *out)
enum fh_error ds_pop(struct fh_thread_s *fh, uint32_t *out);
enum fh_error rs_pop(struct fh_thread_s *fh, uint32_t *out);
enum fh_error cs_pop(struct fh_thread_s *fh, uint32_t *out);
static inline enum fh_error cs_pop(struct fh_thread_s *fh, uint32_t *out) {
return ds_pop(fh, out);
}
enum fh_error ds_push(struct fh_thread_s *fh, uint32_t in);
enum fh_error rs_push(struct fh_thread_s *fh, uint32_t in);
enum fh_error cs_push(struct fh_thread_s *fh, uint32_t in);
static inline enum fh_error cs_push(struct fh_thread_s *fh, uint32_t in) {
return ds_push(fh, in);
}
#endif //FORTH_FH_STACK_H