From exit to set-does> A Story of Gforth Re-Implementation
- M. Anton Ertl, TU Wien
From exit to set-does> A Story of Gforth Re-Implementation M. - - PowerPoint PPT Presentation
From exit to set-does> A Story of Gforth Re-Implementation M. Anton Ertl, TU Wien Bernd Paysan, net2o [] exit execute Exit not tickable in Gforth 0.7 Standard-conforming, but Several complaints over the years Traditionally
: const create , does> @ ; 5 const b : c b ;
head code field body const docol call create call , call (does) @ ;s b dodoes 5
c docol does-exec ;s
head code field body head code field body
: const create , does> @ ; 5 const b : c b ;
new
head code field body const docol call create call , call (does) @ ;s b dodoes 5
c docol does-exec ;s
head code field body head code field body const docol call create call , branch docol @ ;s lit call set-does> ;s
b dodoesxt 5
head code field body head code field body c docol lit call ;s head code field body
: const create , does> @ ; 5 const b : c b ;
new
head code field body const docol call create call , call (does) @ ;s b dodoes 5
c docol does-exec ;s
head code field body head code field body const docol call create call , branch docol @ ;s lit call set-does> ;s
b dodoesxt 5
head code field body head code field body c docol lit call ;s head code field body : const create , [’] @ set-does> ; 5 const b : c b ; const docol call create call , lit @ call set-does> ;s
b dodoesxt @ 5
head code field body head code field body c docol lit @ ;s head code field body
: baseline ; : 0-locals { } ;
lp-trampoline unlocal : 3x0-locals { } ; : y { } ; : z { } ;
lp-trampoline unlocal does> drop ;
new [’] drop set-does> cycles from mispredictions (K8, Haswell) compile, execute compile, execute compile, execute compile, execute AMD64 instructions Haswell cycles K8 cycles ARM Cortex-A9 cycles 10 20 30 40 50 60