[M3devel] "target specific pragmas"?

Tony Hosking hosking at cs.purdue.edu
Tue Feb 12 03:08:46 CET 2008


Indeed!

On Feb 11, 2008, at 8:37 PM, Darko wrote:

> I think it's not a good idea. I think all platform specific code  
> should be in a separate file. I'd also like to see an option to  
> move calling conventions to the makefile rather than in pramas to  
> avoid having to duplicate interface files just to have a different  
> calling convention for a different platform.
>
> - Darko
>
>
> On 12/02/2008, at 12:21 PM, Jay wrote:
>
>> So I have NOT thought this through.
>>
>> I wonder if "preprocessing" dependent only on "target" is a good  
>> idea.
>>
>> Something like either the ability to prefix pragmas with a target,  
>> or an "iftarget" and "ifnottarget" pragma.
>>
>> Something like so:
>>
>> <* IF_TARGET NT386 *>
>> <* END_IF_TARGET*>
>>
>>
>> <* IF_TARGET NT386 *>
>> <* END_IF_TARGET*>
>> It's a small can of worms.
>> Where can they be placed? Only at "global" scope? (ie: toplevel in  
>> an interface/module).
>>
>> What about IF_OSTYPE?
>> What about expressions?
>> IF_TARGET NT386 OR NTAMD64
>>
>> IF_TARGET STARTS(NT)
>>
>> etc.
>>
>> I don't really have enough interest here to work through this,  
>> just sending out the bait...
>>
>> Obviously this was triggered by my happening into the odbc  
>> directory and bringing up ignoring WINAPI on non-NT386 or  
>> prefixing calling conventions with a target.
>>
>> This reminds me of an important point here however -- nobody else  
>> is going to make the mistake of ever having multiple calling  
>> conventions. Therefore the generality of prefixing WINAPI with  
>> NT386: is useless.
>> Unless Mac68K support is added.
>>
>> And here is some rationale even. The PC and Mac evolved from  
>> "small" systems, where assembly programming was common, more  
>> people knew more lower level details and playing games with  
>> calling conventions was something anyone could do. Most other  
>> current systems are rooted in C programming. Working in C, calling  
>> conventions are generally in a hidden layer below what anyone  
>> thinks about. Therefore, the smaller number of capable people  
>> working at that level have the good sense to only have one calling  
>> convention. No more systems will evolve from "small", at least not  
>> without having observed this history. Therefore, there will no  
>> longer be multiple calling conventions.
>>
>> That is my theory at least.
>>
>> Oh, Windows does also have __thiscall and __clrcall. __thiscall is  
>> only x86




More information about the M3devel mailing list