Date: Sat, 25 Aug 2001 16:03:02 +0300 From: Peter Pentchev <roam@ringlet.net> To: Valentin Nechayev <netch@iv.nn.kiev.ua> Cc: John Baldwin <jhb@FreeBSD.ORG>, David O'Brien <obrien@FreeBSD.ORG>, freebsd-hackers@FreeBSD.ORG, Steve Roome <stephen_roome@yahoo.com> Subject: Re: function calls/rets in assembly Message-ID: <20010825160302.A559@ringworld.oblivion.bg> In-Reply-To: <20010825154427.B761@iv.nn.kiev.ua>; from netch@iv.nn.kiev.ua on Sat, Aug 25, 2001 at 03:44:27PM %2B0300 References: <20010824110805.C88259@dragon.nuxi.com> <XFMail.010824113645.jhb@FreeBSD.org> <20010825154427.B761@iv.nn.kiev.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
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 majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010825160302.A559>