Il giorno mer, 25/01/2006 alle 22.29 +0100, Marcel Cox ha scritto:
> > I saw that stack instructions on Intel platform are not used that
> > much. I think this is a pity cause stack operations are small (size
> > optimization) and usually fast (from Pentium two consecutive push/pop
> > are executed together -> speed optimization). Consider this small
> > piece of code
>
>
> whether push(pop instructions or mov instructions are faster depends on
> the type of processor used. GCC is well aware of this. If you specify
> the desired processor with -mtune then GCC will use whatever is best
> for that processor. For example if you optimize for old Pentium
> processors, use -mtune=pentium and you will see that the compiler uses
> push/pop instructions even when not using -Os
Marcus,
I tried many options with some gcc versions but I can confirm that gcc
do not use push in the way I suggest. Perhaps a smaller code will help
extern int foo1(int *a);
void foo2()
{
int x = 2;
foo1(&x);
}
should become something like
foo2:
# here is the optimization I suggested,
# allocation and set with a single instruction
pushl $2
# I don't understand why gcc compile
# movl %esp, %eax pushl %eax here
pushl %esp
call foo1
# this can be subl $4, %esp or similar depending on
# options you suggested
popl %ecx
ret
Is anybody working in this direction ??
freddy77