ASM extensions

James Dunne james.jdunne at gmail.com
Tue Jul 18 08:38:27 PDT 2006


Georg Wrede wrote:
> 
> 
> James Dunne wrote:
> 
>> 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.
> 
> 
> Actually it wouldn't, because the curly braces in _any_ syntax come in 
> pairs. ;-)
> 
> But that fact alone doesn't help the real issue.

Not if the curlies are in comments that don't take a form that D is 
familiar with (such as those starting with -- or semicolon).  In 
comments, all bets are off.

-- 
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/MU/S d-pu s:+ a-->? C++++$ UL+++ P--- L+++ !E W-- N++ o? K? w--- O 
M--@ V? PS PE Y+ PGP- t+ 5 X+ !R tv-->!tv b- DI++(+) D++ G e++>e 
h>--->++ r+++ y+++
------END GEEK CODE BLOCK------

James Dunne



More information about the Digitalmars-d mailing list