Hi Tomas,

> > Yes, the current version of "gcc.l" will not work any longer :-(
> What is the reason for this not being possible?  I though C and asm
> can be linked together (C is compiled to asm anyway).

On the instruction level this is correct, but the calling conventions of
the (assembly) functions in the PicoLisp kernel are different. It is no
longer possible to write a built-in function in C, as built-in functions
expect their argument - and return the result - in the E register (%rbx
on x86-64). And those functions need to be able to access the rest of
the kernel for type checking, evaluation, garbage collection etc. In
addition, such a function is required to start at an address which is a
multiple of 16 plus 2 which is also difficult to achieve in C.

As I wrote to Konrad, it might be possible "design a similar mechanism,
writing inline assembly instead of C, and calling 'as' instead of
'gcc'", or invent other useful things.

We should not worry about that too much now :-)

- Alex

Reply via email to