Re: 2.2.18Pre Lan Performance Rocks!

From: Jeff V. Merkey (jmerkey@timpanogas.org)
Date: Tue Oct 31 2000 - 18:23:47 EST


Ingo Molnar wrote:
>
> On Tue, 31 Oct 2000, Jeff V. Merkey wrote:
>
> > > One could create a 'kernel' that does:
> > > for(;;)
> > > {
> > > proc0();
> > > proc1();
> > > proc2();
> > > proc3();
> > > etc();
> > > }
> >
> > would be coded like this (no C compiler):
> >
> > proc0:
> >
> > proc1:
> >
> > proc2:
> >
> > proc3:
> >
> > etc:
> >
> > label:
> > jmp proc0
>
> oh, and what happens if it turns out that some other place wants to call
> proc3 as well? Recode the assembly - cool! Not.

They would load the registers to the proper values and jump to it. The
return address would be stored in the ESI register, and when the routie
completed, it would do

jmp esi

to return, with 0 stack usage.

>
> > I just avoided 5 x 20 bytes of pushes and pops on the stack ad optimized
> > for a simple fall through case.
>
> FYI, GCC does not generate 5 x 20 bytes of pushes and pops. In fact in the
> above specific case it will not generate a single push (automatically -
> you dont have to worry about it).

If the compiler were set to optimize.

Jeff

>
> Ingo
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Oct 31 2000 - 21:00:31 EST