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

Reply via email to