You have to know when to use it. I think we do okay in that area.
We have assembler optimized versions of string functions which are
often executed during operation, but we also have C versions of
these functions to make ReactOS easier to port to new architectures.
We have assembler code for very low-level code which would be
impossible to do in C. I believe there should be a minimum of
assembly used to increase maintainability/portability and when used,
it should be because there is a major speed difference during
_normal operation_ of the OS. If a function which is called only
once during startup of the OS could be made 1ns faster using
assembly, then it doesn't really make ReactOS feel faster to the
user even though running the function 10000 times in a loop might
show a 1000% average speed increase. If the function was run 1000
times a second during normal operation then the user might feel
a difference. There are other ways to make ReactOS faster than
resorting to assembly. You could use better algorithms for
instance.
Casper
-----Original Message-----
From: ros-general-bounces(a)reactos.org [mailto:ros-general-bounces@reactos.org] On Behalf
Of Kevin
Lawton
Sent: 18. oktober 2005 10:30
To: ReactOS General List
Subject: RE: [ros-general] New to ReactOS
Yeah, okay, but . . .
With C being a 'higher level' language than assembler it will always be
easier for a group of humans to work on a project in. You could take this
further and use something like Java, though not for an op-system kernel as
Java programs need something below them to run the run-time virtual machine.
C is a good language for writing an op system in because that is why it was
designed (by Kerningham and Ritchie - their book on C is still the best work
of its kind). It was created to write the Unix op system in and the
combination of high and low-level features will always make it ideal for
such a task. In terms of generating nice tight machine code when compiled, C
is probably the best high-level language in this respect.
Modern computers are so enormously powerful that most projects feel that it
is unnecessary to use assembler for the extreme efficiency it offers - C is
more than 'good enough'. But, when projects ARE written for modern machines
using assembler we then start to see just how fast things can go. We might
feel that the 'average' PC is plenty fast enough performing day-to-day tasks
with an op system written in C and applications in Java or VB, and it
probably is, but give it a chance to run software written in good assembler
and you can get quite a surprise. Even if we think we can spare it, those
high-level language programs (incl op system) can perform nothing like the
blistering performance you can get from really good assembler code. You also
find that because assembler programming is so 'direct' then the resulting
machine code tends to be far more compact than that generated from other
languages. Smaller programs (op systems included) use less room on disk,
load faster into a smaller memory space and tend to have shorter execution
paths.
It is all fine and dandy that ReactOS will be a working 'clone' of Windows
but Windows is often criticised for being large and slow. What if ReactOS
could achieve full Windows compatibility while being much smaller and faster
?
Kevin.