### Passing Floating-Point Parameters to an Unprototyped Routine

This example differs from the example of Passing Floating-Point Parameters to a Prototyped Routine by the presence of an eyecatcher after the call to `fred` in the caller's code and the code necessary to perform the default widening rules required by ANSI.

       double a, b, c;
       float  d, e;

       a = b + fred(a, d, (long double)(a + c), e, c);

Caller's code up until call:

       PUSH    2ND DWORD OF c       ; Push upper 4 bytes of c onto stack
       PUSH    1ST DWORD OF c       ; Push lower 4 bytes of c onto stack
       FLD     DWORD_PTR e          ; Load e into 80387, promotion
                                    ;  requires no conversion code
       FLD     QWORD_PTR a          ; Load a to calculate p3
       FADD    ST(0), QWORD_PTR c   ; Calculate p3, result is long double
                                    ;  from nature of 80387 hardware
       FLD     DWORD_PTR d          ; Load d, no conversion necessary
       FLD     QWORD_PTR a          ; Load a, no conversion necessary
       SUB     ESP, 40              ; Allocate the stack space for
                                    ;  parameter list
       CALL    FRED                 ; Make call
       TEST    EAX, 00ae0000h       ; Eyecatcher maps the register parameters
       ADD     ESP, 48              ; Clean up parameters from stack

Calling Conventions
Eyecatchers

Examples of Passing Parameters Using _Optlink