static int* find(Task_Data * IData) { int* link=find_a(IData->forth_buffer,Global_Dict->latest); if(!(link)) return find_a(IData->forth_buffer,IData->latest); else return link; }
static void __literal (char* ptr,Task_Data * IData) { int val; compile(TOIP((get_exec_ptr((char*)find_a("LITERAL",Global_Dict->latest)))),IData); DSPOP(val,IData->dsp); compile(TOIP(val),IData); }
static void add_variable_d (char *name, int *addr,Task_Data * IData) { add_header(name,IData); compile((int*)(int)docol,IData); compile(TOIP((get_exec_ptr((char*)find_a("LITERAL",Global_Dict->latest)))),IData); compile(TOIP(addr),IData); compile(0,IData); }
int syntax(t_dlist *list) { check_dump(list); check_paral(list); check_para(list); find_a(list); find_n(list); return (0); }
void add_variable (char *name,Task_Data * IData) { add_header(name,IData); compile((int*)(int)docol,IData); compile(TOIP((get_exec_ptr((char*)find_a("LITERAL",Global_Dict->latest)))),IData); compile(TOIP((IData->here + 2 * sizeof(int))),IData); compile(0,IData); compile(0,IData); }
void func_9_6(void){ char ch; int num; printf("please input your stings:\n"); while((ch=getchar()) != EOF){ num = find_a(ch); if(num >= 0)printf("%c is %d\n",ch,num); else printf("ch is not a alpha.\n"); } }
void interpret(Task_Data *IData) { char *ptr; int *link; if (!word(IData)) return; link = find(IData); ptr = (char*) (link + 1); if (link) { int len = (int)*ptr; ptr = ptr + RFLAGS(len) + 1 + ((int)(RFLAGS(len) + 1) % 2); if (IData->state == 0 || len & IMMED_FLAG) { IData->xt = (void (*)())(*(TOIP(ptr)) & 0xffff); IData->xt(&ptr,IData); //xt(); } else { compile(TOIP(ptr),IData); } } else { if (isnumber(IData)) { if (IData->state == 0) { DSPUSH(number(IData),IData->dsp); } else { ptr = (char*)find_a("LITERAL",Global_Dict->latest); compile(TOIP(get_exec_ptr(ptr)),IData); compile(TOIP(number(IData)),IData); } } else { EMITERRS("Error: Unrecognized command\n"); //stacks_reset(); have to fix this } } }
static void _else_c (char* ptr,Task_Data * IData) { int *origin; int offset; RSPOPp(origin,IData->rsp); compile(TOIP((get_exec_ptr((char*)find_a("BRANCH",IData->latest)))),IData); RSPUSH((int)IData->here,IData->rsp); compile(0,IData); offset = (int)(TOIP(IData->here) - origin); *origin = offset; }
static void _postpone (int *addr,Task_Data * IData) { int *ptr; char *link; word(IData); link = (char*)find(IData); if (!IMMEDIATE(link[sizeof(int*)])) { compile(TOIP(get_exec_ptr((char*)find_a("COMPILE_NEXT",Global_Dict->latest))),IData); } compile(TOIP(get_exec_ptr((char*)link)),IData); ptr = (int*)(int)IData->xt; ptr++; IData->xt = (void (*)())ptr; }
static void _if_c (char* ptr,Task_Data * IData) { compile(TOIP((get_exec_ptr((char*)find_a("0BRANCH",IData->latest)))),IData); RSPUSH((int)IData->here,IData->rsp); compile(0,IData); }