Re: Compiling C++ modules
- From: "J.A. Magallon" <jamagallon@xxxxxxx>
- Date: Tue, 2 May 2006 22:28:12 +0200
On Tue, 2 May 2006 21:21:44 +0300, Al Boldi <a1426z@xxxxxxxxx> wrote:
Christer Weinigel <christer@xxxxxxxxxxx> wrote:
eCos is nice enough -- because it's mostly C :)
And those parts that are C++ (from a 2 year old eCos dist) won't
compile with a modern g++.
C++ is OO, and OO is great! OO is the natural way of doing things, and
allows one to concentrate on the issues at hand, while leaving the
nitty-gritty to the compiler to decide.
And this is the problem, as kernel development is highly sensitive to
compiler output, and which is why there are parts written in asm and others
in C.
So rewriting C with C++ would be as dumb as rewriting asm with C.
But there may be certain higher level parts in the kernel that could benefit
from rewriting C with C++, much the same as lower level parts have benefited
from rewriting them in asm.
So we have a situation like this:
low-level written in asm when needed
main-level written in C mostly
high-level written in C++ when needed
You can control low level features in C++ even much better than in asm.
Just an example. You can be pretty sure that a function like this:
inline void f(const int& x)
{
}
would use the parameter you pass to it without doing a copy on the stack.
And that is not dependent on anything.
For example, I wrote a vector library to do math with SSE, and there it
is fundamental that you don't _ever_ write a xmm register to the stack or
to memory in temporary variables. Look like this:
class Vector {
float f[4];
typedef float __vr __attribute__((__mode__(__V4SF__),__aligned__(16)));
Vector operator+(const __vr that) const
{
return __builtin_ia32_addps(...);
};
Vector operator-(const __vr that) const
{
return __builtin_ia32_subps(...);
};
...
};
--
J.A. Magallon <jamagallon()able!es> \ Software is like sex:
werewolf!able!es \ It's better when it's free
Mandriva Linux release 2006.1 (Cooker) for i586
Linux 2.6.16-jam11 (gcc 4.1.1 20060330 (prerelease)) #1 SMP PREEMPT Mon
Attachment:
signature.asc
Description: PGP signature
- References:
- Re: Compiling C++ modules
- From: Al Boldi
- Re: Compiling C++ modules
- Prev by Date: [PATCH] add __iowrite64_copy
- Next by Date: [PATCH] Add PCI_CAP_ID_VNDR
- Previous by thread: Re: Compiling C++ modules
- Next by thread: Re: Compiling C++ modules
- Index(es):
Relevant Pages
|