Multiple return values...

Robert Jacques sandford at jhu.edu
Sat Mar 10 19:46:02 PST 2012


On Sat, 10 Mar 2012 20:35:02 -0600, Sean Cavanaugh <WorksOnMyMachine at gmail.com> wrote:

> On 3/10/2012 8:08 PM, Mantis wrote:
>> Tuple!(float, float) callee() {
>> do something to achieve result in st0,st1
>> fst st0, st1 into stack
>> load stack values into EAX, EDX
>> ret
>> }
>>
>> void caller() {
>> call callee()
>> push EAX, EDX into a stack
>> fld stack values into st0, st1
>> do something with st0, st1
>> }
>>
>> As opposed to:
>>
>> Tuple!(float, float) callee() {
>> do something to achieve result in st0,st1
>> ret
>> }
>>
>> void caller() {
>> call callee()
>> do something with st0, st1
>> }
>>
>> Is there something I miss here?
>
> Yes, the fact the FPU stack is deprecated :)
>

And that on x86-64, the plan is to allow the passing of floating point stack data through SSE, which would speed up _all_ structs, not just special MRV returns. IIRC, the exact ABI design for this isn't finished yet.


More information about the Digitalmars-d mailing list