Home Upgrade Search Memberlist Extras Hacker Tools Award Goals Help Wiki Contact

Assembly 

What is the Recommended Assembler?

Hello all!

Not a complete beginner to ASM, but prior to now I have been lazy in the sense that I'd just embed ASM into C code, or use Terry Davis' built in assembler in TempleOS.

Now, I am looking to improve my abilities as a ASM programmer, and the limiting methods I used before just won't cut it.

The operating system I use is 64 bit Windows, I am looking for an assembler with a large community and 'traditional'.

Thank you for your time ~ Jamie. ✌
for windows i personaly prefer fasm but you can check nasm and masm to see if its fit your needs
[Image: bitcoin.png] Be Nice For Once 15hVUVz7xA4kazHdk2BuErENGCskVwjYXP
(Jun 5, 2020 05:30 AM)HFDone Wrote:  for windows i personaly prefer fasm but you can check nasm and masm to see if its fit your needs

I tried FASM but I got a bit sick of the Windows non-sense, does FASM allow for CLI apps or just WIN-API apps?
you can create window and console app for 32 & 64
https://board.flatassembler.net/index.php
[Image: bitcoin.png] Be Nice For Once 15hVUVz7xA4kazHdk2BuErENGCskVwjYXP
I've been using Flat Assembler for some time now, just over five years. Although I'm not too big into Assembly in general (for me, C provides the right level of memory management I need for most projects) I have tried both MASM and NASM in the past. I don't know exactly why, maybe it's just that I like how FASM is laid out, but I couldn't get used to using either of the aforementioned. That, and in my not-so-professional opinion FASM is a bit more compact than MASM and NASM.

As far as console and GUI programming on Windows, FASM supports both right out of the box. I'm not sure what you mean by "traditional" but FASM is still kept up-to-date to this day and the community remains pretty old-fashioned. Whether your definition of "traditional" and "old-fashioned" are similar is none of my concern, lol. Just trying to put things into perspective from my experience.

This Windows nonsense you mention, how do you mean? As in the included IDE or the focus in general? To me, saying that makes it sound like you don't care for the Windows wrappers included with FASM. Is it that or something else?
[Image: chain.png]
(Jun 14, 2020 07:34 PM)Sajuuk Wrote:  I've been using Flat Assembler for some time now, just over five years. Although I'm not too big into Assembly in general (for me, C provides the right level of memory management I need for most projects) I have tried both MASM and NASM in the past. I don't know exactly why, maybe it's just that I like how FASM is laid out, but I couldn't get used to using either of the aforementioned. That, and in my not-so-professional opinion FASM is a bit more compact than MASM and NASM.

As far as console and GUI programming on Windows, FASM supports both right out of the box. I'm not sure what you mean by "traditional" but FASM is still kept up-to-date to this day and the community remains pretty old-fashioned. Whether your definition of "traditional" and "old-fashioned" are similar is none of my concern, lol. Just trying to put things into perspective from my experience.

This Windows nonsense you mention, how do you mean? As in the included IDE or the focus in general? To me, saying that makes it sound like you don't care for the Windows wrappers included with FASM. Is it that or something else?

Sorry if my thread was badly laid out.

All I meant is that I like CLI apps, with hours of research, I'm not any closer to finding out whether or not FASM supports CLI. The answers I find are generally open-ended.

I think it's in my own best interest to go down the FASM route, though syntactically, my heart was set on NASM.

The main issue with NASM that I find is, or rather not find, is documentation for Windows (10). It seems to be a very Linux related assembler. I'd happily get a small Linux distribution specifically for ASM, but it'd have to be very light weight as I'm on a "not-so-good" computer, even then - I'd be starting out at square one.
(Jun 14, 2020 08:52 PM)iTHX Wrote:  Sorry if my thread was badly laid out.

All I meant is that I like CLI apps, with hours of research, I'm not any closer to finding out whether or not FASM supports CLI. The answers I find are generally open-ended.

I think it's in my own best interest to go down the FASM route, though syntactically, my heart was set on NASM.

The main issue with NASM that I find is, or rather not find, is documentation for Windows (10). It seems to be a very Linux related assembler. I'd happily get a small Linux distribution specifically for ASM, but it'd have to be very light weight as I'm on a "not-so-good" computer, even then - I'd be starting out at square one.

I think I might be a bit confused of what you mean saying "CLI". I'm assuming you mean command line? If that's the case, any time I use FASM for anything it's based in CLI, namely because whatever I'm doing requires the lowest level memory management possible. Creating and managing GUIs in FASM is a hassle from my perspective (as expected since I find it way easier to use higher level languages for GUIs in general). Granted, like I said I don't use Assembly very often and especially so because I use C and C++ for virtually everything aside from trivial tasks that need automation. (In that case, I use Python. Super quick for those tasks.) Although the included wrappers are for the Windows API (from what I recall) it's still mainly based in CLI from the get go.

I tried out NASM for a few weeks several years ago, around the time I was doing the same. Looking around for a decent assembler with a relatively active community and what not, about the same key points you're looking for. The main reason I went with one over the others is because of the portability aspect of it. For NASM's Windows 10 documentation... I mean... what exactly are you planning to make in Assembly as a CLI? I don't mean to ask that in a condescending manner. Documentation-wise, I wouldn't expect much to change a whole lot even after an extended period of time. You mentioned you're not brand new to Assembly overall, so I expect anything you're familiar with prior to now couldn't have changed much since then. In one year or ten. Now, in MASM's case, if I recall correctly that hasn't been updated in ages. But I did download and try it out again about a year ago, and nothing out of the ordinary came up. I guess you're concerned about the documentation in slightly elevated assembly within Windows 10. But even then, the functionalities haven't changed as far as I know.

I myself care (probably too much) about keeping everything I make and use as lightweight and portable as possible because I'm also on a reasonably sh*tty computer most of the time when working on any programming project. 2GB of RAM and an AMD E300 at 1.9GHz, lol. FASM and GCC perform spectacularly as they do on any of my other machines. If you're on something with even less capable hardware and planning to make something large, I don't think any of the aforementioned assemblers will perform poorly. If GCC runs fine on my machine, it's gotta run fine on pretty well anything. However, both NASM and FASM are great assemblers. I know for sure that FASM allows for targeting both x86 and x64 processors, but I don't know if NASM supports both. It did start out as an x86 assembler, and with as much time has passed since I last used it I expect it to support the same. Both have cross-platform binaries and what not, but I will say NASM, as you said, is more or less Linux-oriented. But from what I can tell both of them have equal support across operating systems. I will say that NASM does have numerous capabilities that put it above FASM in terms of ease of use and user experience. But I guess because I've always used FASM I just became accustomed to accommodating for those things I might have been missing out on. Nonetheless, it may be easier to use.

Tl;dr I've always stuck with FASM, but both are great assemblers for current-day projects. I say it's your choice. Try them both and see which one you like better. You'll be able to do pretty much anything in either of them.

EDIT: Upon further research, apparently NASM has actually stepped up a f*ckton since I last tried it. I'll give it another run tonight.
[Image: chain.png]
flatassembler. net/download.php Here you can download the flat assembler - an open source assembly language compiler, packaged for various operating systems.
I think everyone should try nasm
I use NASM but if I'm specifically on MacOS then Clang assembler or llvm-as
MASM32 all the way :). Or inline MSVC assembler.


Possibly Related Threads...
Thread / Author Replies Views Last Post
[Assembly] by ToyBoyAug 1, 2021 06:20 PM 0 180 Aug 1, 2021 06:20 PM
Last Post: ToyBoy
[Assembly] by Rolex™Feb 9, 2017 08:31 AM 3 331 Feb 9, 2017 08:31 AM
Last Post: Rolex™
[Help] by superMatas2Dec 15, 2016 09:08 AM 2 284 Dec 15, 2016 09:08 AM
Last Post: superMatas2