\ A sometimes minimal FORTH compiler and tutorial for Linux / i386 systems. -*- asm -*-
\ By Richard W.M. Jones <rich@annexia.org> http://annexia.org/forth
\ This is PUBLIC DOMAIN (see public domain release statement below).
-\ $Id: jonesforth.f,v 1.15 2007-10-11 07:39:51 rich Exp $
+\ $Id: jonesforth.f,v 1.17 2007-10-12 20:07:44 rich Exp $
\
\ The first part of this tutorial is in jonesforth.S. Get if from http://annexia.org/forth
\
Notice that the parameters to DUMP (address, length) are compatible with string words
such as WORD and S".
+
+ You can dump out the raw code for the last word you defined by doing something like:
+
+ LATEST @ 128 DUMP
)
: DUMP ( addr len -- )
BASE @ ROT ( save the current BASE at the bottom of the stack )
: C@++ INLINE DUP INLINE 1+ INLINE SWAP INLINE C@ ;CODE
+ One interesting point to note is that this "concatenative" style of programming
+ allows you to write assembler words portably. The above definition would work
+ for any CPU architecture.
+
There are several conditions that must be met for INLINE to be used successfully:
(1) You must be currently defining an assembler word (ie. : ... ;CODE).
( (INLINE) is the lowlevel inline function. )
: (INLINE) ( cfa -- )
- @ ( codeword points to the code, remember )
+ @ ( remember codeword points to the code )
BEGIN ( copy bytes until we hit NEXT macro )
DUP =NEXT NOT
WHILE