Passing dynamic arrays
Daniel Gibson
metalcaedes at gmail.com
Mon Nov 8 13:08:50 PST 2010
Walter Bright schrieb:
> 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.
Ok, thanks for explaining :-)
More information about the Digitalmars-d
mailing list