[Vm-dev] Simulating FFI Calls [was Re: VMMaker simulation - strlen, strcpy, getenv and FakeStdinStream]

Alistair Grant akgrant0710 at gmail.com
Mon Oct 15 16:48:27 UTC 2018


Hi Eliot,


On Mon, 15 Oct 2018 at 16:46, Eliot Miranda <eliot.miranda at gmail.com> wrote:
>
>
> Hi Ben,
>
> On Oct 15, 2018, at 5:28 AM, Ben Coman <btc at openinworld.com> wrote:
>
> On Mon, 15 Oct 2018 at 07:21, Eliot Miranda <eliot.miranda at gmail.com> wrote:
>>
>>
>> But too do that we would need a derived pointer type
>
>
> My usual searches... "define derived pointer" and "what is derived pointer" are not being helpful.
> All results seem to be pointers to C++ derived classes, which I guess is not directly what your referring to.
> Can you educate me on this...?
>
>
> By “derived” I mean a pointer to some point inside an object, not a pointer to the start of an object.  When one passes eg a ByteArray through the FFI to a reference parameter  the marshaling code ends up passing a pointer to the start of the object.  That won’t work if what we want to do is simulate passing a pointer to the start of a simulation object that actually lives at an offset inside the large ByteArray that constitutes the entire heap in the simulation.  So we need to be able to express a ByteArray, offset pair and pass that through the FFI to a reference parameter and have the marshaling code end up passing the derived a pointer that is the start of the ByteArray plus the offset, and hence end up passing a pointer to the start of the simulation object in the large ByteArray that constitutes the entire heap.

As a first step to get things going, couldn't we just copy the
ByteArray's to and from the simulation memory?  It would obviously be
much less efficient, but would reduce the number of pre-requisites to
get started.

Cheers,
Alistair


More information about the Vm-dev mailing list