[dmd-internals] Modifying the dmd compiler to add support for bitfields
Andrei Alexandrescu
andrei at erdani.com
Mon Jan 9 10:16:02 PST 2012
Thanks! Sorry, forgot to ask one more detail so I know which list to put
him in: is he a fee-only advisor?
Thanks,
Andrei
On 1/9/12 12:10 PM, Walter Bright wrote:
> I'm glad you're aware of it.
>
> Anyhow, the compiler (optimizer and back end) can already deal with bit
> fields as it is based on a C compiler. The bitfield ops are replaced by
> mask and shift in the cgelem.c code.
>
> dt_t is simply a way to represent static data.
>
> On 1/9/2012 3:35 AM, Sandeep Datta wrote:
>> Hi Walter,
>>
>> Thanks for the reply. I am aware of the mixin based solution but the
>> main motivation for me at this point is getting to know the D compiler
>> well. And IMHO native support for bitfields will be a welcome new
>> change. I am trying to write an OS/kernel
>> (https://github.com/SDX2000/Deimos) in D and as far as machine hugging
>> code is concerned bitfields and unions are a mainstay. The mixin
>> syntax looks jarring and alien. Please see
>> https://github.com/SDX2000/Deimos/issues/1 for what I am trying to
>> accomplish.
>>
>> I am particularly curious about the dt_t data structure you seem to be
>> using how does this work?
>>
>> Regards,
>> Sandeep Datta.
>>
>> On Mon, Jan 9, 2012 at 5:53 AM, Walter Bright <walter at digitalmars.com
>> <mailto:walter at digitalmars.com>> wrote:
>>
>> Bit fields are already done in D using a library solution:
>>
>> http://d.digitalmars.com/2.0/phobos/std_bitmanip.html
>>
>>
>> On 1/8/2012 7:49 AM, Sandeep Datta wrote:
>>> [Cross post from the D news group]
>>>
>>> Hi All,
>>>
>>> To gain a better understanding of how the D compiler works I am
>>> trying to implement support for bit fields in structures. I have
>>> modified the parser code to admit the following syntax (for now)...
>>>
>>> struct A{
>>> uint:8 a;
>>> uint:5 b;
>>> uint:* unused; //Takes up the remaining space.
>>> //Raise an error when the computed size is zero.
>>> }
>>>
>>> You can see my changes here...https://github.com/SDX2000/dmd
>>>
>>> I have been trying to work out a strategy for modifying the compiler
>>> code generation for quite some time now but haven't been able to
>>> make much headway in this direction.
>>>
>>> I would appreciate any help at this point.
>>>
>>> Regards,
>>> Sandeep Datta.
>>>
>>>
>>> _______________________________________________
>>> dmd-internals mailing list
>>> dmd-internals at puremagic.com <mailto:dmd-internals at puremagic.com>
>>> http://lists.puremagic.com/mailman/listinfo/dmd-internals
>>
>> _______________________________________________
>> dmd-internals mailing list
>> dmd-internals at puremagic.com <mailto:dmd-internals at puremagic.com>
>> http://lists.puremagic.com/mailman/listinfo/dmd-internals
>>
>>
>>
>> _______________________________________________
>> dmd-internals mailing list
>> dmd-internals at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/dmd-internals
>
>
> _______________________________________________
> dmd-internals mailing list
> dmd-internals at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/dmd-internals
More information about the dmd-internals
mailing list