FASMLIB code is very well tested and handles all known boundary cases. It has easier and more advanced error handling than most other assembly libraries. Entire library is portable, with same binary interface on any platform.

Supported platforms:

Supported assemblers: (more can be added on demand)

FASMLIB offers you following:


File I/O:
FASMLIB contains functions wrapping basic file I/O: open, create, close, read, write, seek. Functions refer file with file handles, and use 32bit file position pointers. These functions are limited to files up to 2GB. Because of portability, functions don't allow changing file access flags on linux. Directory functions are not supported yet.

Memory Management:
FASMLIB offers you basic heap memory management: alloc, realloc, free, size. If heap management is not provided directly by OS, FASMLIB provides it's own heap manager. Additionally, FASMLIB contains memory manipulation functions: copy (supports overlapped copy), fill, find, compare

String Library:
FASMLIB contains library for working with static strings. It has strong buffer overflow checking. It allows limited working with non-zero terminated constant-length strings (eg. section name in PE-file header). Provided functions are: copy, concatenate, insert, case conversion (ASCII only, no locale support), get length, find substring. get substring, compare (both case in/sensitive, ASCII case sensitivity only),

FASMLIB contains functions for numeric conversions. Currently it contains function to convert signed or unsigned byte, word or dword value to/from decimal or hexadecimal string. Padding is also supported.

FASMLIB defines it's own interface for stream. Any function that operates on stream can then work with anything that can be represented as stream. Currently there are NUL, console, file and memory streams supported.

FASMLIB provides set of procedures that provide text functions on streams. These include: write string, write number (decimal or hexadecimal), formatted write (printf-like), read number (decimal or hexadecimal), read line, read while/until character (reading terminated by character (not) from given character set), plus few more.