ASM extensions

James Dunne james.jdunne at gmail.com
Thu Jul 13 20:45:36 PDT 2006


BCS wrote:
> James Dunne wrote:
> 
>> Hasan Aljudy wrote:
> 
> [...]
> 
>>>
>>> You don't have to implement any of it, this could be a syntactic sugar.
>>>
>>> for example,
>>> asm(intel)
>>> {
>>> ....
>>> }
>>>
>>> would be a shortcut for
>>> version(intel)
>>> {
>>> asm
>>> {
>>> .....
>>> }
>>> }
>>
>>
>>
>> Maybe you're missing the fact that DMD has to understand Intel-style 
>> ASM syntax so that it may process it correctly for the real assembler...
>>
> 
> DMD already has to be able to parse the ASM enough to find the end of 
> the block. Consider:
> 
> version(intel)
> {
> asm
> {
> ......
> }
> }
> version(arm)
> {
> asm
> {
> ......
> }
> }
> 
> Regardless of the compiler, to correctly find the end of the version, it 
> needs to find the end of the asm. The suggested addition would only 
> requirer DMD to be able to ignore contents of the "wrong" asm block, 
> e.i. correctly find the closing "}" (as it already needs to).
> 
> That said I have not used asm in D so, this is all of no use to me.

version blocks need to be syntactially valid code.  They're not like the 
C preprocessor's #if..#endif blocks.

If one of these ASM syntaxes involves the use of curly braces, then 
finding the true end curly brace of the asm {} block itself might be 
difficult without understanding the ASM syntax itself.

-- 
Regards,
James Dunne



More information about the Digitalmars-d mailing list