/******************************************************************* ** Do float stack dup. ** fdup ( r -- r r ) *******************************************************************/ static void Fdup(FICL_VM *pVM) { #if FICL_ROBUST > 1 vmCheckFStack(pVM, 1, 2); #endif PICKF(0); }
/******************************************************************* ** Do float stack over. ** fover ( r1 r2 -- r1 r2 r1 ) *******************************************************************/ static void Fover(FICL_VM *pVM) { #if FICL_ROBUST > 1 vmCheckFStack(pVM, 2, 3); #endif PICKF(1); }
/******************************************************************* ** Do float stack pick. ** fpick ( n -- r ) *******************************************************************/ static void Fpick(FICL_VM *pVM) { CELL c = POP(); #if FICL_ROBUST > 1 vmCheckFStack(pVM, c.i+1, c.i+2); #endif PICKF(c.i); }
/******************************************************************* ** Do float stack ?dup. ** f?dup ( r -- r ) *******************************************************************/ static void FquestionDup(FICL_VM *pVM) { CELL c; #if FICL_ROBUST > 1 vmCheckFStack(pVM, 1, 2); #endif c = GETTOPF(); if (c.f != 0) PICKF(0); }