Thanks for the responses. I have been reading the docs and using 'vi' (like
a n00b, see below) to navigate the sources. Sounds like a bit more time and
patience is needed on my part :)
I wasn't so much interested in a dump of the generated native ASM; I agree
that wouldn't be very useful. Though it's good to know it can be done. I
was more curious if a dump of the PiocLisp ASM was possible, say for a
top-level REPL call (e.g. '(mapc println (1 2 3))). But it sounds like it
is not, as the PL ASM kicks out generated ASM as soon as the VM is built.
My mental model of things down there is a bit fuzzy yet.
I was not aware I could use Shift-K/Q to hop around so easily. Thanks for
the tip! I had just been calling vi, quitting, calling vi with the next,
quitting... heh. Sounds like this is a better way to chase those cells
around than dump anyway. I'll keep at it.
On Wednesday, August 26, 2015, John Duncan <duncan.j...@gmail.com> wrote:
> I think, Erik, you should review the PicoLisp Reference about evaluation.
> In PicoLisp, everything is interpreted except primitive functions which are
> either implemented in C (32-bit) or assembly (64-bit). So the source you
> see in the lisp files is the same as what the compiler will execute, except
> that data structures are built and symbols resolved during (read).
> The relevant part of the manual is here:
> On Wed, Aug 26, 2015 at 1:00 AM, Alexander Burger <a...@software-lab.de
>> Hi Erik,
>> > I imagine something like CL's 'disassemble' that, given an arbitrary
>> > expression, returns the sequence of VM instructions the expression maps
>> To extend a little what Tomas and Andreas said:
>> I think it is not so very useful to look at the generated native ASM
>> code, as it more or less maps 1:1 to the PicoLisp assembly, and the
>> latter is more readable.
>> Still, you can easily disassemble the executable:
>> $ objdump -S bin/picolisp |view -
>> When looking at the sources with 'vi', e.g. extending Andreas' example
>> $ pil +
>> : (vi 'vi)
>> you can navigate by moving the cursor to some identifier and hit Shift-K