D Design Could Be Improved
Alexander Panek
a.panek at brainsware.org
Sun Dec 17 09:11:10 PST 2006
Aleksey S. Skidan wrote:
> The inline assembler seems to be a weak point in the language design.
> I do like the GCC inline assembler and can't understand the reasons
> why not to use it. The current implementation of D's inline assembler
> is IMNHO not good.
> Let's consider the following example:
> asm{ di 2+3; }
> The code won't ever be compiled. Just because the assembler consider 2+3 not
> to be a constant expression. But it certainly is (it depends on 2 constants).
> The other ugly thing is Intel syntax. There's a lot of software written in
> AT&T syntax. I guess both the Intel and AT&T syntaxes must be available.
> The weakness of current inline assembler makes the language (i mean D) not
> fitable for system programming.
This might be a good point, but then again you can still use actual
assembler files in AT&T syntax to accomplish that. IMHO, this should be
done for large portions of assembler sources, anyways. You can interface
D with assembler without *any* problems (been there, done that - with
both, nasm and gas).
> I noticed that there's no ability to name a symbol in a way like that:
> void foo() asm("bar"); Please, note that this kind of naming is very handy for
> embeded systems and a lot of stuff like that.
What exactly do you mean with that? Would that imply foo() being mangled
as "bar"? If so, I think this could be a great feature, yes.
> Yep, there's extern(C) but why
> does it underscore? There must be a switch that turns underscoring off.
I don't have any underscores here..? I've used normal extern(C) foo(){}
+ call foo in assembler, and it works.
> The
> next disappointment is that one can't specify where to put a symbol. I mean
> one can't say to put "foo" into .some_section instead of .text section.
Mh, right.
> I do agree with the point that bit fields are BAD things. But the bit array
> you introduced isn't better. You must at least specify the way the bit array
> is stored in the memory: is it BE LE or what. The next thing about them is
> that they don't really save the memory. I mean that the bit[8] blah; is 32
> bits long. But then the better way to write the same thing is: enum{ B0, B1,
> ..., B7 }; char blah;
Bit fields are really BAD, as you said. Apart from that, in most cases
you just use bit operations to alter bits in a variable. If there's a
need for a datatype that supports "bit fields" and is not like BitArray,
just give me a hint. I was thinking about implementing one too,
somewhen. Apart from that, do you have a specific of how such a datatype
should look like?
>
> My best regards, Aleksey.
Thanks for your comments, D is way too little used in the embedded
sector, yet, so every constructive comment just can help!
I am experimenting a bit with OS development in D. If you want to take a
look at what I've got so far: http://trac.brainsware.org/ocd/browser/
Best regards,
Alex
More information about the Digitalmars-d
mailing list