| |
| Directory overview: |
| =================== |
| |
| As writing portable assembler sources supporting different operating |
| systems, compilers and assemblers has proven to be extremely painful, |
| the assembler sources have been converted into a more portable `db' |
| format. Use these whenever possible. |
| |
| src_gas sources converted for portable gcc/gas syntax |
| src_masm sources converted for portable masm/tasm/wasm syntax |
| src_nasm sources converted for portable nasm syntax |
| |
| src assembler sources (you need the OpenSource nasm assembler) |
| |
| obj pre-assembled object files |
| |
| Also look `src_XXX/all/asm_all.asm' which contains all assembler |
| functions conveniently arranged into a single file. |
| |
| |
| Notes: |
| ====== |
| |
| - The assembler sources are designed for a flat 32-bit memory model |
| running in protected mode - they should work with all i386 |
| 32-bit compilers around. |
| |
| - All functions expect a `cdecl' (C stack based) calling convention. |
| The function return value will be placed into `eax'. |
| All other registers are preserved. |
| |
| - Prototypes for the assembler functions can be found in <lzo/lzo_asm.h>. |
| |
| - For reasons of speed all fast assembler decompressors (having `_fast' |
| in their name) can access (write to) up to 3 bytes past the end of |
| the decompressed (output) block. Data past the end of the compressed |
| (input) block is never accessed (read from). |
| [ technical note: because data is transferred in 32-bit units ] |
| |
| - Finally you should test if the assembler versions are actually faster |
| than the C version on your machine - some compilers can do a very good |
| optimization job, and they also can optimize the code for a specific |
| processor type. |
| |