LinAsm Information
LinAsm is the package of very fast assembly written libraries, which provide functions, algorithms and abstract data types for different kind of tasks. All of them are reenterable and do not modify any global variables. They are grouped by categories in depending of the tasks they cover.
All functions are written on pure flat assembler language, and export function names to link with C/C++ programs. Function names follow GCC name standard. If your programming language understands "C" names syntax, and can link shared libraries (*.so), then you may use these libraries inside your projects are written in the language you like.
Installation
LinAsm libraries can be easily installed on x86-64 Linux system. Just follow LinAsm installation procedure in the "Support" section to find how to do it.
Usage
To link the library to C/C++ program just add "-llinasm" to gcc options. It will link library functions from shared object file "liblinasm.so" with your code. Be aware, that library, by default, is placed into the "/usr/local/lib", which can be changed in Makefile. So you may need to set up shell variable "LD_LIBRARY_PATH" to use that directory in LDD search pathes. To do it just type in your working shell "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib" or add appropriate string into shell startup files such as ".bashrc".
Another way to call library is to tell the linker where to find library file during compilation process. Just add "-Wl,-rpath=/usr/local/lib" to gcc options.
Common C/C++ libraries
- Angle - Angles conversion from different units
- Approximation - Approximation algorithms for empirical data
- Array - Common routines that are useful for arrays
- Complex - Complex numbers functions
- FPU - FPU control functions
- Math - Fast math functions
- Matrix - Matrix operations
- Numbers - Numbers conversion functions
- Sequence - Subsequence searching algorithms
- SIMD - SIMD control functions
- Statistics - Widely used statistical functions
- String - Safe string functions
- Time - Time functions
- 2D vector - Functions to operate with 2D vectors
- 3D vector - Functions to operate with 3D vectors
Digital Signal Processing and FIR filters
- FHT - Fast Hartley Transformation
- Filter - Finite impulse response (FIR) digital filters
- Window - Window functions for digital signal processing (DSP)
Abstract data types
- Deque - Double-ended queue data type
- List - Doubly linked list data type
- MaxHeap - Binary max heap data type
- MinHeap - Binary min heap data type
- MultiHash - Multiply keys hash table data type
- MultiTree - Multiply keys b-tree data type
- Ring - Circular doubly linked list data type
- Stack - Stack data type
- UniqueHash - Unique keys hash table data type
- UniqueTree - Unique keys b-tree data type
- Vector - Vector data type
Memory allocators
- Accumulating buffer - Extendable buffer to accumulate content of data stream
- Object poll - Pool of pre allocated objects
Linux system calls
- Filesystem - Filesystem system calls
- Network - Network system calls
- Time - Time system calls
- Processes - Process management system calls
- Signals - Signals system calls
- IPC - Inter Process Communication system calls
- NUMA - Non-uniform memory access system calls
- Key management - Linux key management system calls
- System-wide - System-wide system calls
Instructions set
- CPU instructions - Central Processing Unit (CPU) instructions set
- FPU instructions - Floating-Point Unit (FPU) instructions set
- SIMD instructions - Single Instruction Multiple Data (SIMD) instructions set
- AES instructions - Advanced Encryption Standard (AES) instructions set
- MPX instructions - Memory Protection Extensions (MPX) instructions set
- SMX instructions - Safer Mode Extensions (SME) instructions set
- TSX instructions - Transactional Synchronization Extensions (TSX) instructions set
- VMX instructions - Virtual Machine Extensions (VME) instructions set