Re: Cross compiling

Anton Ertl <anton-8NJIiSa5LzB3ZGU3T6kWFyEcasqEdqbRs2V0tQ3P5b8@public.gmane.org> Mon, 1 Mar 2021 23:36:57 +0100
Newsgroups gmane.comp.lang.forth.gforth
Message-ID <[email protected]>
On Mon, Mar 01, 2021 at 08:54:21PM +0000, Ethan Gardener wrote:
> I was responding to Anton Ertl's comment, "Assembly language is not a particularly nice way of writing Forth
> code, though (and most of a Forth system is written in Forth);" particularly with a view to what proportion of Jonesforth is assembly language.

What I mean is stuff like (from
<https://github.com/nornagon/jonesforth/blob/master/jonesforth.S>):

defword ":",1,,COLON
	.int WORD		// Get the name of the new word
	.int CREATE		// CREATE the dictionary entry / header
	.int LIT, DOCOL, COMMA	// Append DOCOL  (the codeword).
	.int LATEST, FETCH, HIDDEN // Make the word hidden (see below for definition).
	.int RBRAC		// Go into compile mode.
	.int EXIT		// Return from the function.

In Forth you would write this as

: : WORD CREATE docol , latest @ hidden ] ;


> > >I imagine JonesForth's double-indirect threading would be good for 8-bit systems.
> > 
> > Did he ever get his terminology straight? That was always my main beef 
> > with JonesForth: he didn't understand what direct/indirect threading 
> > actually referred to.

He codes NEXT as follows:

   lodsl
   jmp *(%eax)

That's indirect-threaded code.  The comments talk about
direct-threaded and indirect-threaded code.  This may be a little
confusing, but Kogge takes a similar approach in "An architectural
trail to threaded-code systems"; and I followed him on this trail on
<https://www.complang.tuwien.ac.at/forth/threaded-code.html>.

- anton