MOO-cows Mailing List Archive


[ Re: Server Improvement]

------- Start of forwarded message -------
Date: Tue, 18 Mar 1997 20:56:49 PST
From: "Robert J. Brown" <>
In-reply-to: <> (message from Jeff
	Watkins on Tue, 18 Mar 1997 15:51:51 PST)
Subject: Re: Server Improvement
Precedence: bulk

>>>>> "Jeff" == Jeff Watkins <> writes:

    Jeff> Robert Jay Brown wrote:
    >> A function call with a signature of void (*func)(void) passes
    >> no parameters, and returns no results.  Consequently, it is
    >> quite fast, and generates a single subroutine call instruction,
    >> with no stack pushing or popping other than the return address
    >> itself.  The overhead here is a single memory cycle for call,
    >> and another single memory cycle for returning.

    Jeff> Sorry, but even a void function must push local variables
    Jeff> onto the stack.  On almost every processor family I've ever
    Jeff> written assembly for (five and growing) a jump table (such
    Jeff> as might be used in a switch statement) is better than a
    Jeff> subroutine.

I agree, and I have written for many mor than 5 cpu's in assembler.
My point was that you only pay a 2 cycle penalty for the call and
return.  Since you do not normally use local variables when a jump
table is used, as the code strips are not in a separate block, then
the assumption is that you don't need them for the thunks that would
be called by an array of subroutine pointers either, hence the 2 cycle
overhead statement still applies.

- -- 
- --------  "And there came a writing to him from Elijah"  [2Ch 21:12]  --------
Robert Jay Brown III  1 847 705-0424
Elijah Laboratories Inc.;  37 South Greenwood Avenue;  Palatine, IL 60067-6328
- -----  M o d e l i n g   t h e   M e t h o d s   o f   t h e   M i n d  ------
------- End of forwarded message -------

Home | Subject Index | Thread Index