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


Groups > comp.lang.forth > #17637

Re: DTC

From anton@mips.complang.tuwien.ac.at (Anton Ertl)
Newsgroups comp.lang.forth
Subject Re: DTC
Date 2012-11-28 14:21 +0000
Organization Institut fuer Computersprachen, Technische Universitaet Wien
Message-ID <2012Nov28.152154@mips.complang.tuwien.ac.at> (permalink)
References <ad599bc5-3e28-4fe0-a2d5-dc9b9dfb2255@eo2g2000vbb.googlegroups.com>

Show all headers | View raw


Mark Wills <forthfreak@gmail.com> writes:
>Very nice write-up here about the Forth virtual machine, complete with
>links to our very own Anton Ertl's pages:
>
>http://www.wordiq.com/definition/Forth_virtual_machine
>
>One thing that struck me, it mentions that direct threaded is not as
>"flexible" as ITC. I was wondering in what respect DTC is less
>flexible? Anyone have any opinions/comments?

You would best ask the author of that page what is meant.

According to Wikipedia:

|A famous aphorism of David Wheeler goes: "All problems in computer
|science can be solved by another level of indirection"

The indirection in ITC was not introduced gratuitiously; in
particular, it allows to treat words more uniformly.  I don't know if
that is the flexibility that is meant there, though.

A typical DTC approach in Forth (used in gforth-0.5 on some machines)
would be to emulate ITC by replacing the indirect pointer in the code
field with a jump (or call) to the routine.  One loss of flexibility
here is that creating a non-primitive now requires machine-dependent
code.

Another approach is the primitive-centric approach used since
gforth-0.6.  There the threaded code contains only primitives and
their immediate arguments, and other words are compiled to a primitive
and an argument, e.g., a call to a colon definition is compiler to the
primitive CALL plus the body address of the colon definition.  This
does not require machine-dependent code, but one cannot patch, e.g., a
variable into a deferred word in a way that affects existing uses of
the variable (whereas that works in ITC).  Also, COMPILE, now becomes
much more complex.

You might be interested in

@InProceedings{ertl02,
  author =	 {M. Anton Ertl},
  title =	 {Threaded Code Variations and Optimizations (Extended
                  Version)},
  booktitle =	 {Forth-Tagung 2002},
  year =	 {2002},
  address =	 {Garmisch-Partenkirchen},
  url =          {http://www.complang.tuwien.ac.at/papers/ertl02.ps.gz},
  abstract =	 {Forth has been traditionally implemented as indirect
                  threaded code, where the code for non-primitives is
                  the code-field address of the word. To get the
                  maximum benefit from combining sequences of
                  primitives into superinstructions, the code produced
                  for a non-primitive should be a primitive followed
                  by a parameter (e.g., \code{lit} \emph{addr} for
                  variables). This paper takes a look at the steps
                  from a traditional threaded-code implementation to
                  superinstructions, and at the size and speed effects
                  of the various steps.\comment{It also compares these
                  variants of Gforth to various other Forth
                  implementations on contemporary machines.} The use
                  of superinstructions gives speedups of up to a
                  factor of 2 on large benchmarks on processors with
                  branch target buffers, but requires more space for
                  the primitives and the optimization tables, and also
                  a little more space for the threaded code.}
}

- anton
-- 
M. Anton Ertl  http://www.complang.tuwien.ac.at/anton/home.html
comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
     New standard: http://www.forth200x.org/forth200x.html
   EuroForth 2012: http://www.euroforth.org/ef12/

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


Thread

DTC Mark Wills <forthfreak@gmail.com> - 2012-11-27 08:01 -0800
  Re: DTC Paul Rubin <no.email@nospam.invalid> - 2012-11-27 08:55 -0800
    Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-11-27 09:01 -0800
  Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-11-27 17:42 -0800
    Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-11-27 23:50 -0800
      Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 04:41 -0600
        Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-11-28 02:48 -0800
          Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 05:27 -0600
            Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-11-28 03:51 -0800
              Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-11-28 21:56 -0800
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-11-29 01:26 -0800
                Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-11-29 22:34 -0800
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-11-30 01:42 -0800
                Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-11-30 13:18 -0800
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-01 01:42 -0800
                Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-12-03 15:25 -0800
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-12-03 16:18 -0800
                Re: DTC "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-12-03 21:20 -0500
                Re: DTC "Elizabeth D. Rather" <erather@forth.com> - 2012-12-03 17:29 -1000
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-04 00:12 -0800
                Re: DTC Paul Rubin <no.email@nospam.invalid> - 2012-12-05 11:35 -0800
                Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-12-04 20:17 -0800
                Re: DTC Ron Aaron <rambamist@gmail.com> - 2012-12-05 08:31 +0200
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-04 23:48 -0800
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-04 23:53 -0800
                Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-12-05 12:13 -0800
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-12-05 15:26 -0800
                Re: DTC Ron Aaron <rambamist@gmail.com> - 2012-12-06 06:32 +0200
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-06 01:07 -0800
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-12-06 04:23 -0800
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-06 15:49 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-06 07:42 -0800
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-12-06 08:30 -0800
                Re: DTC Paul Rubin <no.email@nospam.invalid> - 2012-12-06 09:45 -0800
                Re: DTC albert@spenarnc.xs4all.nl (Albert van der Horst) - 2012-12-06 21:41 +0000
                Re: DTC "A. K." <akk@nospam.org> - 2012-12-06 23:15 +0100
                Re: DTC albert@spenarnc.xs4all.nl (Albert van der Horst) - 2012-12-08 01:27 +0000
                Re: DTC "A. K." <akk@nospam.org> - 2012-12-08 11:19 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-08 03:55 -0800
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-08 13:44 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-08 06:05 -0800
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-08 18:35 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-08 11:20 -0800
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-09 01:01 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-08 06:10 -0800
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-08 18:57 +0100
                Re: DTC "A. K." <akk@nospam.org> - 2012-12-08 19:46 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-08 11:23 -0800
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-08 13:37 +0100
                Re: DTC "A. K." <akk@nospam.org> - 2012-12-08 14:41 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-08 06:15 -0800
                Re: DTC "A. K." <akk@nospam.org> - 2012-12-08 17:07 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-06 14:16 -0800
                Re: DTC Brad Eckert <hwfwguy@gmail.com> - 2012-12-07 09:00 -0800
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-06 14:21 -0800
                Re: DTC "Elizabeth D. Rather" <erather@forth.com> - 2012-12-06 08:01 -1000
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-06 14:18 -0800
                Re: DTC "Elizabeth D. Rather" <erather@forth.com> - 2012-12-06 13:48 -1000
                Re: DTC "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-12-06 19:03 -0500
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-12-07 02:59 -0800
                Re: DTC albert@spenarnc.xs4all.nl (Albert van der Horst) - 2012-12-06 13:13 +0000
                Re: DTC "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-12-05 20:39 -0500
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-06 15:46 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-06 07:47 -0800
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-12-06 08:36 -0800
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-12-05 04:03 -0800
                Re: DTC "Clyde W. Phillips Jr." <cwpjr02@gmail.com> - 2012-12-06 20:30 -0800
                Re: DTC David Thompson <dave.thompson2@verizon.net> - 2012-12-11 23:52 -0500
                Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-12-12 10:59 -0800
                Re: DTC David Thompson <dave.thompson2@verizon.net> - 2012-12-31 02:43 -0500
                Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2013-01-02 00:44 -0800
            Re: DTC albert@spenarnc.xs4all.nl (Albert van der Horst) - 2012-11-28 13:54 +0000
              Re: DTC "Clyde W. Phillips Jr." <cwpjr02@gmail.com> - 2012-12-06 20:16 -0800
    Re: DTC "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-11-28 06:58 -0500
      Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-11-28 04:50 -0800
        Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 07:08 -0600
          Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-11-28 06:02 -0800
            Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 08:23 -0600
          Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-28 14:18 +0000
            Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 08:32 -0600
              Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-28 15:00 +0000
                Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 09:18 -0600
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-28 16:36 +0000
                Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 11:02 -0600
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-28 17:13 +0000
                Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 12:03 -0600
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-28 18:12 +0000
                Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 12:32 -0600
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-29 14:30 +0000
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-11-29 18:05 +0100
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-11-29 11:19 -0800
                Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-30 03:14 -0600
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-30 14:12 +0000
                Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-30 10:32 -0600
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-30 16:40 +0000
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-12-01 15:34 +0000
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-01 21:23 +0100
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-12-03 16:28 +0000
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-03 18:44 +0100
                Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-12-03 04:50 -0600
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-03 16:48 +0100
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-12-03 15:59 +0000
                Re: DTC albert@spenarnc.xs4all.nl (Albert van der Horst) - 2012-11-30 15:34 +0000
                Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-30 10:36 -0600
                Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-11-30 12:47 -0800
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-11-28 11:29 -0800
        Re: DTC "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-11-29 04:15 -0500
          Re: DTC "Elizabeth D. Rather" <erather@forth.com> - 2012-11-29 08:52 -1000
      Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-11-28 22:25 -0800
        Re: DTC "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-11-29 04:12 -0500
  Re: DTC humptydumpty <ouatubi@gmail.com> - 2012-11-28 02:04 -0800
  Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-28 14:21 +0000

csiph-web