Re: Stack based machines (George Neuner)
25 Mar 2000 02:36:26 -0500

          From comp.compilers

Related articles
Stack based machines (Linus Thand) (2000-03-23)
Re: Stack based machines (2000-03-23)
Re: Stack based machines (2000-03-25)
Re: Stack based machines (Pieter Koopman) (2000-03-25)
Re: Stack based machines (2000-03-25)
Re: Stack based machines (2000-03-25)
Re: Stack based machines (2000-03-25)
Re: Stack based machines (Deepak Janardhanan) (2000-03-25)
Re: Stack based machines (Philip Koopman) (2000-03-25)
Re: Stack based machines (Keith Wootten) (2000-03-28)
Re: Stack based machines (Bernd Paysan) (2000-03-28)
Re: Stack based machines (Deepak Janardhanan) (2000-03-28)
| List of all articles for this month |

From: (George Neuner)
Newsgroups: comp.compilers,comp.arch
Date: 25 Mar 2000 02:36:26 -0500
Organization: Dynamic ReSolutions, Inc.
References: 00-03-101 00-03-124
Keywords: architecture, performance

On 23 Mar 2000 23:45:32 -0500, wrote:

>Linus Thand <> wrote:
>> What is happening in the world of stack-based machines?
>> Are there any active groups working on processors or
>> compilers (I'm especially interested in functional languages).
>> [Other than forth, not much I'm aware of. Registers give an architecture
>> a big performance boost, and it's hard to fake that by caching to top of
>> the stack. -John]
> Well, there's the whole Java thing and Sun making
> those processor cores: {micro,pico,ultra}Java which
> I believe are all stack machines. I do remember
> reading a design document from Sun a long time back
> which described mapping the top elements of the stack
> to registers in at least one of these processors.
> Manoj
>[There have been lots of stack architectures that kept the top of the
>stack in registers, but it's my impression that performance is worse
>than real registers. Registers hold common subexpression values and
>hot loop variables as well as expression temporaries, and stack
>caching doesn't easily get either of those. -John]

Sorry for the large quote, but it's need to establish the context.

One thing you can do is to frame the data stack so that all the
function locals and temporaries are at known offsets. Stack size
permitting, that gives you effectively unlimited registers and you use
classic stack ops only for expression evaluation. It does require the
ability to load and store values at arbitrary stack positions, but
many stack machines already allow deep fetches.

This architecture is (currently) better suited to a software VM
interpreter than to real hardware, but there have been a few academic
attempts to create such hardware.

George Neuner
Dynamic Resolutions, Inc.

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.