-- Author: Erick Gallesio [eg@unice.fr] -- Creation date: 28-Sep-1997 18:27 -- Last file update: 14-Dec-1997 22:05 -- This directory contains code which deals with the stack. It is VERY machine dependent and must be adapted for new architectures. In some circumstances, part of the code must even be written in assembler. The code contained in this directory defines a library called libstack which is needed for STk FFI (Foreign Functions Interface). Basically, this code allow to push argument on the stack (at least logically, since first parameters of a function are often in registers) and call the function when all the arguments have been pushed. The push functions are typed and there is a function call for each type of function result. The types managed by the library as arguments are: - char - short (signed and unsigned) - int (signed and unsigned) - long (signed and unsigned) - float - double - pointers (without type) - strings - booleans (seen as int in the C world) The types returned which can be returned by a function called by the FFI can be: - char - short (signed and unsigned) - int (signed and unsigned) - long (signed and unsigned) - float - double - pointers ( pointer can point static or dynamic data) - strings - boolean Array are not managed yet, since they don't seem very useful. Structures are not managed by the library but their support would be very useful. However, most of the C library don't use C struct as parameters but rather pointers on C structures. All the symbols exported by the library are prefixed by stk (for "stack", not "STk" ;-) This code has been tested on the following architectures/systems I386 Linux 2.0 (ELF) sun4x SunOS 4.1.x & SunOS 5.5.x Alpha OSF1 V4.0 HP HP-UX B.10.20 MIPS32 IRIX 6.2 To port the library on another architecture, start for the architecture which is the "nearest". You can compile a test program with "make testlib". A simple and fast test is "./testlib | uniq -c". Each function call must be preceded by the number 2. If you port the library on another architecture, please send a patch file by mail at eg@unice.fr. Thanks.