Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #60518

Re: Heap's algorithm

From rickman <gnuarm@gmail.com>
Newsgroups comp.lang.forth
Subject Re: Heap's algorithm
Date 2017-06-09 13:43 -0400
Organization A noiseless patient Spider
Message-ID <ohemhq$dum$1@dont-email.me> (permalink)
References (2 earlier) <774d2d0e-81f4-4219-a17d-858494f100a1@googlegroups.com> <7931b062-2ae1-4810-a14b-c29cf7721dd8@googlegroups.com> <2fc231bf-4c5a-45fd-9718-ced9d9c65238@googlegroups.com> <ohee0q$el2$1@dont-email.me> <31bae73b-2d31-492c-85b5-adc515259fb0@googlegroups.com>

Show all headers | View raw


Julian Fondren wrote on 6/9/2017 11:42 AM:
> On Friday, June 9, 2017 at 10:18:10 AM UTC-5, rickman wrote:
>> : switch ( a1 a2 -- )  >R >R ROVER @ RDUP ! @ ! ;
>
> Does this actually work? It looks like it sets both addresses to the
> same value instead of swapping their values. Just look at the
> store/fetch words: @ ! @ ! instead of @ @ ! !
>
> I would think you'd need
>
>   : switch ( a1 a2 -- ) >R >R ROVER @ RDUP @ SWAP ! ! ;
>
> Or more neatly:
>
>   : switch ( a1 a2 -- ) >R >R RDUP @ ROVER @ ! ! ;
>
> That saves a SWAP , which is also what the locals version saves.

Let's try it one instruction at a time...

: switch ( a1 a2 -- )  >R >R ROVER @ RDUP ! @ ! ;

         ( a1 a2 -- )    (R: -- )                 ( a1:x1 a2:x2 )
 >R      ( a1 a2 -- a1 ) (R: -- a2 )              ( a1:x1 a2:x2 )
 >R      ( -- )          (R: a2 -- a2 a1 )        ( a1:x1 a2:x2 )
ROVER   ( -- )          (R: a2 a1 -- a2 a1 a2 )  ( a1:x1 a2:x2 )
@       ( -- x2 )       (R: a2 a1 a2 -- a2 a1 )  ( a1:x1 a2:x2 )
RDUP    ( -- x2 )       (R: a2 a1 -- a2 a1 a1 )  ( a1:x1 a2:x2 )
!       ( -- )          (R: a2 a1 a1 -- a2 a1 )  ( a1:x2 a2:x2 ) oops!
@
!
;

Yes, your final word looks good.

I've also looked at an addressable stack machine that allows a very small 
offset into the stack to retrieve operands which saves a *lot* more stack 
juggling.  It would require a compiler to be aware of operand positions to 
be able to use this effectively.  I haven't done much other than to code up 
an example app, but it was much more instruction efficient.  The variations 
on instruction set use between 103 and 60 instructions with the 103 being my 
basic stack processor and 60 being the stack indexed instruction set.

The app for this comparison is an interrupt routine for a software DDS which 
generates the value to feed a DAC on the fly.  Maybe I'll get around to 
working on this and produce an FPGA design.  I think it could produce 
significantly more compact code than a straight stack design.  Not sure what 
it would take to write an optimizing compiler for it.

-- 

Rick C

Back to comp.lang.forth | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-08 23:21 -0700
  Re: Heap's algorithm Raimond Dragomir <raimond.dragomir@gmail.com> - 2017-06-09 00:27 -0700
    Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-09 01:40 -0700
      Re: Heap's algorithm Raimond Dragomir <raimond.dragomir@gmail.com> - 2017-06-09 02:15 -0700
        Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-09 03:04 -0700
          Re: Heap's algorithm Raimond Dragomir <raimond.dragomir@gmail.com> - 2017-06-09 03:50 -0700
            Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-09 07:37 -0700
              Re: Heap's algorithm Coos Haak <htrofhc@gmail.com> - 2017-06-09 19:50 +0200
                Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-09 11:32 -0700
            Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-09 07:54 -0700
            Re: Heap's algorithm Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-06-09 10:11 -0500
              Re: Heap's algorithm Alex <alex@rivadpm.com> - 2017-06-09 18:43 +0100
          Re: Heap's algorithm rickman <gnuarm@gmail.com> - 2017-06-09 11:18 -0400
            Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-09 08:42 -0700
              Re: Heap's algorithm rickman <gnuarm@gmail.com> - 2017-06-09 13:43 -0400
      Re: Heap's algorithm Lars Brinkhoff <lars.spam@nocrew.org> - 2017-06-09 13:08 +0200
    Re: Heap's algorithm hughaguilar96@gmail.com - 2017-06-09 09:35 -0700
      Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-09 23:31 -0700
        Re: Heap's algorithm hughaguilar96@gmail.com - 2017-06-10 14:28 -0700
          Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-10 14:44 -0700
            Re: Heap's algorithm hughaguilar96@gmail.com - 2017-06-10 18:56 -0700
              Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-10 19:19 -0700
                Re: Heap's algorithm hughaguilar96@gmail.com - 2017-06-10 21:04 -0700
                Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-10 21:08 -0700
                Re: Heap's algorithm Ron Aaron <rambamist@gmail.com> - 2017-06-11 07:19 +0300
                Re: Heap's algorithm Alex <alex@rivadpm.com> - 2017-06-11 09:43 +0100
                Re: Heap's algorithm minforth@arcor.de - 2017-06-11 02:35 -0700
                Re: Heap's algorithm Alex <alex@rivadpm.com> - 2017-06-11 10:45 +0100
                Re: Heap's algorithm rickman <gnuarm@gmail.com> - 2017-06-11 12:32 -0400
                Re: Heap's algorithm Alex <alex@rivadpm.com> - 2017-06-11 17:52 +0100
                Re: Heap's algorithm rickman <gnuarm@gmail.com> - 2017-06-12 23:26 -0400
                Re: Heap's algorithm hughaguilar96@gmail.com - 2017-06-12 19:55 -0700
                Re: Heap's algorithm krishna.myneni@ccreweb.org - 2017-06-11 14:40 -0700
                Re: Heap's algorithm hughaguilar96@gmail.com - 2017-06-12 09:02 -0700
                Re: Heap's algorithm hughaguilar96@gmail.com - 2017-06-10 21:30 -0700
                Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-10 21:51 -0700
                Re: Heap's algorithm "Robert L." <No_spamming@noWhere_7073.org> - 2017-06-12 02:24 +0000
                Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-11 19:28 -0700
                Re: Heap's algorithm Melzzzzz <Melzzzzz@zzzzz.com> - 2017-06-12 03:41 +0000
                Re: Heap's algorithm hughaguilar96@gmail.com - 2017-06-14 22:15 -0700
                Re: Heap's algorithm Ron Aaron <rambamist@gmail.com> - 2017-06-15 08:29 +0300
                Re: Heap's algorithm Alex <alex@rivadpm.com> - 2017-06-15 12:24 +0100
                Re: Heap's algorithm Ron Aaron <rambamist@gmail.com> - 2017-06-15 15:59 +0300
                Re: Heap's algorithm hughaguilar96@gmail.com - 2017-06-16 01:25 -0700
                Re: Heap's algorithm awegel@arcor.de (Alexander Wegel) - 2017-06-15 14:08 +0200
                Re: Heap's algorithm hughaguilar96@gmail.com - 2017-06-16 10:46 -0700
                Re: Heap's algorithm awegel@arcor.de (Alexander Wegel) - 2017-06-17 02:47 +0200
  Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-09 00:31 -0700
  Re: Heap's algorithm Coos Haak <htrofhc@gmail.com> - 2017-06-09 12:32 +0200
  Re: Heap's algorithm hum9 <obi65537@gmail.com> - 2017-06-09 10:03 -0700
    Re: Heap's algorithm hum9 <obi65537@gmail.com> - 2017-06-09 22:28 -0700
  Re: Heap's algorithm hum9 <obi65537@gmail.com> - 2017-06-10 03:07 -0700
    Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-10 05:41 -0700
      Re: Heap's algorithm hum9 <obi65537@gmail.com> - 2017-06-10 18:05 +0300
  Re: Heap's algorithm "Robert L." <No_spamming@noWhere_7073.org> - 2017-06-12 03:32 +0000
    Re: Heap's algorithm "Robert L." <No_spamming@noWhere_7073.org> - 2017-06-12 03:35 +0000
      Re: Heap's algorithm "Robert L." <No_spamming@noWhere_7073.org> - 2017-06-12 04:01 +0000
      Re: Heap's algorithm "Robert L." <No_spamming@noWhere_7073.org> - 2017-06-12 11:01 +0000
    Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-11 21:14 -0700
      Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-11 22:00 -0700
        Re: Heap's algorithm Melzzzzz <Melzzzzz@zzzzz.com> - 2017-06-12 07:54 +0000
          Re: Heap's algorithm Julian Fondren <julian.fondren@gmail.com> - 2017-06-12 01:13 -0700
            Re: Heap's algorithm Melzzzzz <Melzzzzz@zzzzz.com> - 2017-06-12 08:20 +0000
  Re: Heap's algorithm Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2017-06-14 20:17 +0100
    Re: Heap's algorithm hughaguilar96@gmail.com - 2017-06-16 01:16 -0700
      Re: Heap's algorithm Alex <alex@rivadpm.com> - 2017-06-16 15:14 +0100
        Re: Heap's algorithm Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2017-06-16 20:15 +0100
      Re: Heap's algorithm Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2017-06-16 20:14 +0100
        Re: Heap's algorithm hughaguilar96@gmail.com - 2017-06-16 19:35 -0700

csiph-web