I don't have huge recruiting experiences, so cannot tell, but maybe
someone in our crew (Mindaugas :) could find it interesting in the
future and even find time for it.

Of course everyone is welcome and you can try getting ppl interested,
I seem to recall there is some infrastructure for that on sf.net even.

Brgds,
Viktor

On Tue, Jun 2, 2009 at 9:26 PM, Massimo Belgrano <[email protected]> wrote:
> How recruit c developer for the best xbase compiler?
> what about add an invitation on harbour website?
> something like (and sorry for my bad english)
> "A global tool with people around all word , know as the best xbase compiler
> search c developer (and why not english documenter) for a special mission
> made a batter product starting from the best product"
> i can post an official messages (from one guru Przemek, Viktor , Pritpal )
> also in other website
>
> 2009/6/2 Szakáts Viktor <[email protected]>
>>
>> Hi Przemek,
>>
>> Thanks for these ideas, exactly what I wanted to know.
>>
>> For me it's too complicated to convert to actual code
>> (plus I'm not using .dlls), but I hope someone can implement
>> it in a future Harbour version.
>>
>> Brgds,
>> Viktor
>>
>> On 2009.06.02., at 17:30, Przemyslaw Czerpak wrote:
>>
>>> On Tue, 02 Jun 2009, Szak�ts Viktor wrote:
>>>
>>> Hi,
>>>
>>>> We still have some non-portable code to support DLL calls on Windows.
>>>> The problem with this is that it only works on x86 Windows systems
>>>> (this means it isn't available on WinCE, x64 and IA64) and the
>>>> implementation
>>>> uses inline ASM to solve the problem.
>>>> Is it possible to replace DynaCall() function with a portable,
>>>> pure C solution?
>>>
>>> AFAIK no but it can be hacked to use pure C code for chosen platforms
>>> if you know well used ABI (calling convention).
>>> F.e. for x64 1-st 10 parameters are passed in registers without touching
>>> stack (AFAIR RAX, RCX, R1, R2, ..., R8). These are 64bit registers so
>>> they can be used to hold most of data types without any casting or
>>> dividing
>>> (except long double and some structures). It means that it should be
>>> enough
>>> to introduce pseudo function with 10 parameters and cast real function
>>> to this one before calling, f.e. sth like:
>>>
>>>  typedef LONGLONG  ( CALLBACK * _DLL_FUNC_ )
>>>        ( LONGLONG p1, LONGLONG p2, LONGLONG p3, LONGLONG p4, LONGLONG p5,
>>>          LONGLONG p6, LONGLONG p7, LONGLONG p8, LONGLONG p9, LONGLONG p10
>>> );
>>>
>>>  LONGLONG p[ 10 ], llresult;
>>>  _DLL_FUNC_ lpFunc;
>>>
>>>  /* initalize params casting them to LONGLONG: */
>>>  p[ 0 ] = ( LONGLONG ) ...;
>>>  p[ 1 ] = ( LONGLONG ) ...;
>>>     ...
>>>
>>>  /* initialie function address: */
>>>  lpFunc = ( _DLL_FUNC_ ) GetProcAddress;
>>>
>>>  /* call function */
>>>  llresult = (lpFunc)( p[ 0 ], p[ 1 ], p[ 2 ], p[ 3 ], p[ 4 ],
>>>                       p[ 5 ], p[ 6 ], p[ 7 ], p[ 8 ], p[ 9 ] );
>>>
>>> I cannot test it but it should work though it's possible that some
>>> types are not returned in RAX and in such case we will have to introduce
>>> second version of such function declared with different return type.
>>> Similar hacks can be introduced also for other calling conventions
>>> but some of them force strict number of parameters so the caller
>>> has to use casting to 10 different functions depending on number of
>>> passed parameters and some parameters like 64bit integers or double
>>> values should be divided into two ones if parameter holder is not large
>>> enough f.e. on 32 bit systems. Some types may also need special handling
>>> for returned values and repeated function declaration.
>>> AFAIR maximum number of DLL function parameters on x...@32 is 16.
>>> We have two calling conventions C and STD and 3 methods of returning
>>> parameters: LONGLONG, double, float. So finally we will need 16 * 2 * 3
>>> pseudo functions which will be used in pure C code with strict number
>>> of normalized parameters.
>>> Someone who use windows, knows assembler and calling convention used
>>> in this OS should be able to create such code and test it. Current ASM
>>> code can be used as source for parameters conversion and types of
>>> functions.
>>> Sorry but due to limited access to this system I cannot make it myself.
>>> It's possible that such code written for x...@32 will also work with
>>> wi...@arm without any modifications or with some small ones in parameter
>>> encoding or additional exceptions for returned values.
>>>
>>> best regards,
>>> Przemek
>>> _______________________________________________
>>> Harbour mailing list
>>> [email protected]
>>> http://lists.harbour-project.org/mailman/listinfo/harbour
>>
>> _______________________________________________
>> Harbour mailing list
>> [email protected]
>> http://lists.harbour-project.org/mailman/listinfo/harbour
>
>
>
> --
> Massimo Belgrano
>
>
>
> _______________________________________________
> Harbour mailing list
> [email protected]
> http://lists.harbour-project.org/mailman/listinfo/harbour
>
>
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to