[fpc-pascal] Re: assign code to a method
Angel Montesinos
montesin at uv.es
Sun Feb 20 08:23:47 CET 2011
El 18/02/2011 17:59, Andrew Haines escribió:
>> From the other comments it seems like you are writing some assembly to
> memory at runtime then calling that code?
That is right.
>If so then maybe the following
> can help you.
> ...code...
> so the usage would be like so
> function TTrampolineManager.GenerateCode(args: ....): Pointer;
> begin
> try
> Result := CurrentBlock.Position; // = @Block + Block.Cursor
> repeat
> WriteData(your_data, size_of_data);
> until done;
>
> except
> on e: TrampolineBlockFullException do
> begin
> TrampolineManager.AllocateBlock;
> Result := GenerateCode(args);
> end;
> end;
> end;
>
>
> Hope this helps :)
A lot! I understand that for purposes other than trampolining, the
essence of this is the the way of building an almost contiguous list, say
Block: array[0..lastCodePiece] of Pointer;
of DEP executable codes inside an authorized chunk of memory, and that
the call for assigning one of them, Block[i], to some function declared as
otherObject.thisFunction(other args): Double;
would be
@otherObjectInstance.thisFunction:= Block[i];
And also the way to obtain another block when one of them has
been exhausted, and the way of disposing of them, right?
Many thanks, Andrew. I intend to apply this to my old programs in 32
bit Windows. I'll tell you about the outcome.
--
montesin at uv dot es
More information about the fpc-pascal
mailing list