From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <47B5FAC2.3060304@proweb.co.uk> Date: Fri, 15 Feb 2008 20:49:06 +0000 From: maht User-Agent: Icedove 1.5.0.14pre (X11/20071018) MIME-Version: 1.0 To: Fans of the OS Plan 9 from Bell Labs <9fans@cse.psu.edu> Subject: Re: [9fans] Google search of the day References: <47B5E278.7030107@proweb.co.uk> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Topicbox-Message-UUID: 56d9553a-ead3-11e9-9d60-3106f5b1d025 I think the stack direction is just for the pseudocode, the stack in my implementation grew down, it depends on what assembler primitives are available I guess >> >> >> moddiv: >> colon >> divmod >> swop >> semi > > I am genuinely lost, do not understand a word of it. colon tells the inner loop that this is a set of other Words (addresses) not machine instructions so the loop will execute divmod (which does division with modulous and leave the divsor, mod on the stack) swop then reverses the order of the top two stack items semi then jumps to semi to pop the next I before jumping to it It gives you an interactive compiler without linking as you can add new Words at runtime :square dup * would put square : colon dup multiply semi somewhere in memory (called the dictionary) My version uses two stacks, one for args and one for addresses for more analysis I suggest some online reading, I'm not deep enough into either paradigm to offer suitable insights