change memory model #1

Merged
trinity merged 9 commits from meta into main 2022-12-09 21:08:37 -07:00
3 changed files with 33 additions and 15 deletions
Showing only changes of commit 2e9cd20761 - Show all commits

View File

@ -11,12 +11,12 @@ int main(int argc, char **argv){
void (*op)(struct State *); void (*op)(struct State *);
s.chart = *(argv+1); s.chart = *(argv+1);
s.counter = 0; s.counter = s.chart;
for(s.counter = 0; ; ++s.counter){ for(s.counter = s.chart; ; ++s.counter){
if(s.chart == (char *)0) if(s.chart == (char *)0)
return (int)s.hand; return (int)s.hand;
if((op = Ops_lookup(s.chart[s.counter])) == NULL) if((op = Ops_lookup(*s.counter)) == NULL)
return 127; return 127;
else else
op(&s); op(&s);

View File

@ -5,15 +5,13 @@
* Adjust to architecture/system/environment/etc. */ * Adjust to architecture/system/environment/etc. */
typedef uint64_t hand_t; typedef uint64_t hand_t;
/* Just has to be fairly big. (TODO specify) */
typedef uint64_t counter_t;
/* Holds *argv; will not change between environments. */ /* Holds *argv; will not change between environments. */
typedef char * chart_t; typedef char * chart_t;
struct State{ struct State{
chart_t chart; chart_t chart;
counter_t counter; chart_t point;
chart_t counter;
hand_t hand; hand_t hand;
}; };
#endif #endif

View File

@ -18,7 +18,7 @@ void Ops_carat(struct State *s){
} }
void Ops_ampersand(struct State *s){ void Ops_ampersand(struct State *s){
s->hand = (char)s->chart; s->hand = (uint64_t)s->chart;
} }
void Ops_splat(struct State *s){ void Ops_splat(struct State *s){