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

Reply via email to