Hi Marten,
a) The image did not work on my Ipaq 2210
I am running the image with an extension card; it is a "normal" image with little changes (I plan to upload a file with the changes soon). It requires at least 17Mb free in the external backing store.
b) The virtual machine seems to be much, much slower than the old machine ... I have here. But I was able to start the dynapad image - but it behaves not very well.
The current implementation is only a rearrangement of files and recompilation on the C side. No changes in the Smalltalk side.
Make It Work Make It Right Make It Fast
I am trying to make it work, built with VMMaker and with FFI included (if posible to translate ASM code required by FFI ). [*]
cheers, Ale.
[*] The code is a little asm expression that must be adapted to ARMV4 processor. Any help will be appreciated. ASM code for x86 machine follows: ------------------------------------------ /*************************************************************************** **/ /*************************************************************************** **/ int oldSP; int oldBP; int newSP; int newBP;
/* ffiCallAddress: Perform the actual function call. */ int ffiCallAddress(int fn) { #if 0 { FILE *f = fopen("ffi.log","at"); fprintf(f, "%x",fn); fflush(f); fclose(f); } #endif #ifdef _MSC_VER __asm { push ebx mov ebx, fn push ecx push edx push edi push esi push ebp /* mark the frame */ mov ebp, esp /* alloca() ffiStackIndex size bytes */ mov ecx, ffiArgIndex shl ecx, 2 sub esp, ecx /* copy stack */ mov edi, esp lea esi, ffiArgs shr ecx, 2 cld rep movsd /* go calling */ call ebx /* restore frame */ mov esp, ebp /* store the return values */ mov intReturnValue, eax mov intReturnValue2, edx fstp floatReturnValue /* restore register values */ pop ebp pop esi pop edi pop edx pop ecx pop ebx /* done */ } #endif #ifdef __GNUC__ asm(" movl %%ebp, _oldBP movl %%esp, _oldSP pushl %%ebx; pushl %%ecx; pushl %%edx; pushl %%edi; pushl %%esi; pushl %%ebp; /* mark the frame */ movl %%esp, %%ebp /* alloca() ffiStackIndex size bytes */ movl _ffiArgIndex, %%ecx; shll $2, %%ecx; subl %%ecx, %%esp /* copy stack */ movl %%esp, %%edi; leal _ffiArgs, %%esi; shrl $2, %%ecx; cld; rep movsl; /* go calling */ call *%%ebx /* restore frame */ movl %%ebp, %%esp /* store the return values */ movl %%eax, _intReturnValue movl %%edx, _intReturnValue2 fstpl _floatReturnValue /* restore register values */ popl %%ebp popl %%esi popl %%edi popl %%edx popl %%ecx popl %%ebx movl %%ebp, _newBP movl %%esp, _newSP ": /* no outputs */ : "ebx" (fn) : "eax" /* clobbered registers */); /* done */ #endif #if 0 { FILE *f = fopen("ffi.log","at"); fprintf(f, "...ok\n"); if(oldBP != newBP || oldSP != newSP) { fprintf(f,"oldSP=%x, oldBP=%x\nnewSP=%x, newBP=%x\n",oldSP, oldBP,newSP,newBP); } fprintf(f,"SP=%x, BP=%x\n",newSP,newBP); fflush(f); fclose(f); } #endif return intReturnValue; } ------------------------------------------
----- Original Message ----- From: "Marten Feldtmann" M.Feldtmann@t-online.de To: "Alejandro F. Reimondo" aleReimondo@smalltalking.net Cc: "The general-purpose Squeak developers list" squeak-dev@lists.squeakfoundation.org; bryce@kampjes.demon.co.uk; wallenberg@gmail.com Sent: Tuesday, November 02, 2004 6:38 PM Subject: Re: PDA and Squeak
I downloaded the stuff:
a) The image did not work on my Ipaq 2210 b) The virtual machine seems to be much, much slower than the old machine ... I have here. But I was able to start the dynapad image - but it behaves not very well.
Just a first short view
Marten