DCCInline v 0.7 © Copyright 1992, 1993 Giuseppe Sacco Description: ~~~~~~~~~~~ DCCInline is a utility that allows to improve code quality of any program that is to be compiled with DICE 2.06.40R (or higher). DCCInline makes use of the possibility of the new version of the compiler of passing parameters to functions using registers. (except math ones, whose functions require double type argument) DCCInline allows creation of libraries of "registerized" type in the two models: l and s (with reference to A4). DCCInline needs at least AmigaOS 2.04 and has been tested on OS 3.0 and works correctly. Usage: ~~~~~ Using it is very simple: DCCInline accepts as input an .fd file and a prototype file of the library and it produces a new proto file and a linkable .lib file. Once these files have been created, to make use of improved code generation just recompile your programs using these files. DCCInline FDFILE/A,CLIBFILE/A,INCFILE/A,LIBFILE/A,TMPDIR/K,VERBOSE, A4REL/S,PRECHAR/K,CLEAN/S,EURISTICTAGS/S FDFILE/A input .fd filename CLIBFILE/A input prototypes filename INCFILE/A output include file LIBFILE/A output .lib file Warning: DCCInline DOES NOT remove old .lib files, if they exist, new data will be appended to old files! TMPDIR/K temporary dir name (default T:) VERBOSE/S get verbose description of what is going on. A4REL/S switch that allows creation of a .lib file so that any function will make use of vars with reference to A4. PRECHAR/K this is the text string that will be before any any function name. Default is @@, but DICE uses @. CLEAN/S delete temporary files when done. EURISTICTAGS/S this is an interesting option that activates the creation of entries (stubs) with registered parameters also for functions with tags or with variable arguments. In a word, it tries to understand if the function is a vararg or tag version of another, and if so it creates an entry that calls directly the other one after putting the parameters in the registers. Warning! This may not work sometimes! Distribution: ~~~~~~~~~~~~ DCCInline can be distributed only in its original, unmodified form, which consists of this archive containing only this doc file and the executable program. None distributing this archive should charge more than 1 US dollar for copying. DCCInline is a Copyrighted Freely distribuitable program. The author reserves any right for this utility. Final version will be able to generate entry points for math functions (can DICE do this?) and a better euristic. Warranties: ~~~~~~~~~~ DCCInline have been heavily tested and no bugs are known to exist. The euristic for tags and varargs functions has been tested with all Amiga functions and no problem popped out. Anyway, NO WARRANTY is supplied for anything related to DCCInline, neither the program itself, nor the programs compiled with files produced with it! Note: ~~~~ DICE 2.06.40R has a bug, causing "sometimes" the result of a function which requires parameters in the registers to be lost. So it is possible that some programs that work perfectly compiled without DCCInline, when compiled with it, wont work any more. This problems usually pops out by getting the program in a endless loop. Mr. Dillon has been informed about this problem and it will probably addressed in a future version of DICE. To use the complete C library it is necessary to recompile the whole c(srl).lib including the appropriate prototypes. If not, the functions called by the C library will be invoked with parameters set in different registers from those expected. (This means that the actual C library calls amiga functions with registerized parameters in a different way from those specified in the .fd file) Author: ~~~~~~ For any comment, request, suggestion, bug report please contact the author at one of the following addresses: Giuseppe Sacco via E. de Filippo, 44 30038 Spinea VE ITALY uucp: inri%pisaug.adsp.sub.org@cbmvax.cbm.commodore.com fido: (no fido anymore, soon a new node)