FASMLIB is multiplatform library for x86 (32 bit) ASM programmers. It is designed to be easy to and powerful (you often have simple and powerful versions of same function). It's purpose is to get programmer rid of annoying routine coding, and to allow to write multiplatform programs easily in assembler. Also it is designed to catch many bugs in code.

There is version for win32 and linux platforms. It has support for FASM, MASM, NASM and YASM. Support for other platforms and assemblers can be added, just contact me.

Hello vid! Is it planned to implement additional filesystem operations like to open and read directories and setting file properties? I would like to move on to CGI programming with FASM, and FASMLIB seems perfect for that, since i'm actually programming on WINDOWS, while application should run on LINUX too...

I *did* plan it while i was working on FASMLIB, but now this project is paused at best (or likely, stopped completely). The most i will maybe do one day would be "completing" version 1.0 (support for floating point numbers and support for directory services), but even that is not sure, and surely it won't happen soon.

Well, i see the problems with libc listed in your Wikipedia entry. If i really make the step towards CGI programming with ASM, i will try to expand FASMLIB as good as i can. In this case i will contact you of course, if you still like to maintain FASMLIB.

The errors you get are imports from Kernel32.dll missing. FASMLIB object doesn't build it's own import data. Usually there is "kernel32.lib" which does that for importing KERNEL32.DLL, etc. You should list it in linkers command line arguments, instead of libc (libcmt.lib). Sadly, FASMLIB doesn't get on well with libc (especially on linux), you shouldn't use both at the same time. It was aimed to be alternative, not extra library.

You also shouldn't link all three fasmlib.obj, fasmlib2.obj and fasmlib2.lib, only one of them. Did you the read manual (in doc/ subdir), section "Usage"? The manual gives full example including command line options for MS linker. I never used alink, but it should be analogous to MS link, you just need to get kernel32.lib compatible with it somewhere.

Sorry, I read the manual... but I've been trying to link with the comments suggested in hello.asm (in examples/nasm/portable/hello). I finally got it to work correctly:
nasm -fwin32 hello.asm -o test.obj

I know that fasmlib is public domain... but I've been wondering about link (which is only available with my install of vc) and kernel32.lib (which are only available with my install of the ddk - I believe) - what would I do in a client environment if I wanted to assemble/link a generated assembly file ... could these files be included with a distribution of my program?

You are right, I have somehow managed to put libcmt into that one example, no idea what for. Seems it shouldn't be needed.

I am not completely sure about MS link. There is VS Express which is free-as-in-beer, but you have to be agree to its license to use it. Under your circumstances, using different linker than MS link, one that is free-as-in-GNU, seems to be the right solution.

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot vote in polls in this forumYou cannot attach files in this forumYou can download files in this forum