On Sat, Aug 25, 2001 at 03:44:27PM +0300, Valentin Nechayev wrote:
> Fri, Aug 24, 2001 at 11:36:45, jhb (John Baldwin) wrote about "Re: function
>calls/rets in assembly":
>
> > > printasint:
> > > pushl %ebp
> > > movl %esp,%ebp
> > > subl $8,%esp
> > > addl $-8,%esp
> [...]
>
> > Because this code is broken and obfuscated? :)
> >
> > We save %esp in %ebp (the only thing that keeps it from breaking) then
> > for some
> > reason allocate two quadwords on the stack unnecessarily, one using an add
> > instruction, one using a sub.
>
> Because gcc has `-mpreferred-stack-boundary=4' default.
> Please read info gcc to realize what this option means.
> If you want to avoid this, compile with `-mpreferred-stack-boundary=2',
> as FreeBSD kernel is compiled. The only illogical thing here is
> that it doesn't gather two %esp moving instructions (one for frame of
> this function, one for frame for called function) to single one.
[snip]
>
> Well, now you should add wanted options to /etc/make.conf and avoid
> seeing of such nightmares.
I wonder if a mentioning of -mpreferred-stack-boundary should be
added to tuning(7)..
G'luck,
Peter
--
No language can express every thought unambiguously, least of all this one.
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message