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) { doThis(); bar: doThat(); } 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