Passing dynamic arrays

Walter Bright newshound2 at digitalmars.com
Mon Nov 8 13:03:58 PST 2010


Daniel Gibson wrote:
> Daniel Gibson schrieb:
>> Daniel Gibson schrieb:
>>> Walter Bright schrieb:
>>>> Daniel Gibson wrote:
>>>>> BTW: What were the reasons to pass static arrays by value in D2 
>>>>> (while in D1 they're passed by reference)?
>>>>
>>>> It makes things like vectors (i.e. float[3]) natural to manipulate. 
>>>> It also segues nicely into hopeful future support for the CPU's 
>>>> vector instructions.
>>>
>>> Why can't that be done when the static arrays are passed by reference?
>>
>> Ah I guess you mean something like "alias float[3] vec3", so one may 
>> expect vec3 to behave like a value type (like when you define it in a 
>> struct) so it's passed by value.
>> That does make sense, even though I'm not sure what's more important: 
>> consistency between different kinds of arrays or expectations towards 
>> typed defined from static arrays. ;-)
>>
>> I still don't get the part with the CPU's vector instructions though. 
>> I don't have any assembly knowledge an no experience with directly 
>> using CPU's vector instructions, but the example of a C function 
>> wrapping SSE instructions from the wikipedia article[1], which 
>> multiplies two arrays of floats, loads the arrays by reference and 
>> even stores the result in one of them.
> 
> Hrm forgot the link:
> [1] http://en.wikipedia.org/wiki/Vector_processor

You don't write an add function by using references to ints. The vector 
instructions treat them like values, so a value type should correspond to it.


More information about the Digitalmars-d mailing list