Hi Dean,

> Re multiple entry points are we talking setjmp, longjmp and saving/restoring
> ebx esi edi bp sp & pc? I'm looking at this along with stack control.

No, a multiple entry point would be (in C for demonstration):

   void foo(void) {

and then, in *another* function:

   goto bar;  // Illegal

With stack control I mean that you can do unlimited 'push'es and 'pop's to/from
the stack inside a function, and build arbitrary structures this way on the
stack. You can add, subtract, increment and decrement the stack pointer
arbitrarily, and switch between different stacks by assigning values to the
stack pointer.

> Re the carry flag...you can easily get at this but do you want change it
> too?

What do you mean? Change what? I do not want to change anything.

> compliant...if you wanted to access C functionality from PB you could
> reduce the c to asm and PB could include it as PB modules. I have this on

No, I want a *generic way* to call existing external libraries, e.g.

      (native "@" "setsockopt" 'I 3 6 1 (I (4 . I) . 0) 4)
      (native "libcrypto.so" "MD5" '(B . 16) Str (length Str) '(NIL (16)))
      (native "@" "printf" 'I "abc%d%s^J" (+ 3 4) (pack "X" "Y" "Z"))

or like it is done in in @lib/openGl.l and other libs.

See? 'native' can call *any* C function defined somewhere else, without knowing
at compile time the number and types of the arguments. This is impossible in C.

> Re register allocation...REGISTER *variable* [AS *type*] [, *variable* [AS
> *type*]]
> The REGISTER statement is used to define certain local variables which are
> stored directly in specific CPU registers,

This is not helpful. I want to define registers *globally", so that values,
arguments and return values can be passed between functions. All functions get
arguments in 1, 2, or more registers, and *return* values (not just a single
value!) in 1, 2 or more registers, plus direct condition codes.

♪♫ Alex
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to