Re: Compiling C++ modules



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



Relevant Pages

  • Re: Compiling C++ modules
    ... 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. ... Note though, C++ is not currently viable for kernel development, due to its enormous overhead generated by immature compiler technology. ...
    (Linux-Kernel)
  • Re: Compiling C++ modules
    ... nitty-gritty to the compiler to decide. ... So rewriting C with C++ would be as dumb as rewriting asm with C. ... Note though, C++ is not currently viable for kernel development, due to its ...
    (Linux-Kernel)
  • new codegen thoughts...
    ... C was parsed into an XML-based AST; ... the ASM was assembled and linked. ... compiler frontend to the codegen to make this work). ... CPU registers will be mapped to the tvars behind the scenes (the AST ...
    (comp.compilers)
  • optimizers are overrated
    ... I started learning ASM not long ago to improve my understanding of the ... The first function uses a typical C style loop to ... which one is more efficient all you guys would reply "the compiler will most ... so my "write C like ASM" optimization worked. ...
    (comp.lang.c)
  • Re: Hiring Advice
    ... I still need to know ASM or at least know how to read ... what the Compiler does to figure out what went wrong. ... If, instead, you stuff all your globals into a struct, then the compiled code only fetches the base address from the constant pool once, then uses the free constant offset to get to the individual parts. ... And so the idea that you can get away without any ability to work at the assembly level is worrisome, and that the schools seem to be teaching it now as a given even more so. ...
    (comp.arch.embedded)