Work in progress. The passing of struct parameters is for sure
incorrect, for instance: A temporary copy needs to be allocated and
its address passed.
No assembly involved. The idea is to call the external function as if
it was a varargs one, and passing the four first qword-size parameters
as if they were doubles, thus nicely causing them to be both in the
integer and floating-point parameter registers, from either of which
the callee will get them, depending on their actual expected type.
Rename existing files a bit for clarity.