Blob Blame History Raw

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.


- 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.