Date: Fri, 06 Aug 1999 08:55:10 -0600 From: Wes Peters <wes@softweyr.com> To: Mike Smith <mike@smith.net.au> Cc: Arun Sharma <adsharma@home.com>, freebsd-hackers@FreeBSD.ORG Subject: Re: Excessive assembly code ? Message-ID: <37AAF74E.BEB770A9@softweyr.com> References: <199908060705.AAA00655@dingo.cdrom.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Mike Smith wrote: > > > > > I wonder if so much assembly code is really necessary for FreeBSD. One > > argument for minimal usage of assembly code is that it is easier to code > > non trivial algorithms in C. > > > > One such example is the scheduler. Since the decision about which process > > is going to run next is decided in assembly code, it is restricted to a > > relatively dumb algorithm of scanning the runqs and picking one. If the > > mechanism (i.e nuts and bolts of the context switch) is coded in assembly > > and the policy (which process to pick next) is done in C, the code would > > be much more maintainable, IMO. > > > > How do people feel about it here ? > > I've been studying this just recently. The "pick the next proc" code > really should be MI and written carefully in C, yes. But if you look > at the code surrounding it, for example, it needs some very careful > thought. > > Much of the assembly code actually in use is there for performance or > architecture-related reasons; in many cases if you were to rewrite in C > you would just end up with a lot of asm() macros... And the total amount we have now doesn't seem excessive. Historically, UNIX has usually had 2-3% of the code in assembly, I doubt we're over that. There are some things which are still *easier* to do in assembler, especially on an architecture with port-mapped I/O. -- "Where am I, and what am I doing in this handbasket?" Wes Peters Softweyr LLC http://softweyr.com/ wes@softweyr.com 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?37AAF74E.BEB770A9>