There's no reason to start a dispute :)

Each of us has our own preferred assembler to use, and in my opinion, none is "inferior" to the other. MASM in my opinion, offers abundant support for ideal application writing (private, personal, commercial, etc.), high-level imitations of syntax, readiability of code, but the downside is that it offers *less* (not little...) flexibility compared to the other assemblers, with some confusing syntax that can easily be sorted out...

I've personally tried out quite a few of the xASMs there are (NASM, FASM, MASM, and TASM), but the two i use most often are NASM and MASM, as i find MASM ideal for normal apps, and i use NASM oftentimes for it's unique ability for a coder to construct a PE by hand :) thus producing very tiny apps so the code has to be quite..."ASM" ;) (and i owe thanks to Numit_Or and Vecna for paving the first few steps of this :alright: ), i just like to code unique stuff :tongue:

well, i've used FASM, and it looks quite nice, and it isn't a bit behind the other assemblers, but as you know, i'm a lazy man, and i couldn't get the Setpath thing working, so i felt it was too much of a hassal to fix it, or to type set path %include% = c:\fasm\includes everytime i start up, so hehe :rolleyes:


so chill :)
Posted on 2003-08-05 14:54:10 by Drocon
Sorry fo the incident ( the attatched file was wrong :S )

Here is the link:
useNASM32PACKAGE.EXE ( RAR SFX )

Well, and by the way:

"No MASM does not let you do it in both ways.

mov eax,VAR will never mov the address of VAR into eax. MASM does it the right way. If you wish to mov an address into eax that is only known at run time you use lea..."

heh, know what MASM does with -for example- this "lea eax,Variable" ?

1st: this instruction DOESNT EXIST.
2nd: MASM swallows it and """assembles""" it.
3rd: The correct way for lea ( THIS IS IN FACT A STANDARD IN THIS CASE ) would be lea reg, >> lea reg,
4th: Masm generates this machine code B8 XX XX XX XX ( address of variable ) > mov eax,imm32

So... just an example to show you how things really go... an unexistent instruction swallowed as good, completelly different machine code generated, no offset involved ( should be? ),...

Sincerelly, I dont want a flame, but hell, this is just an example :( and there are too much.

P.S.: I encourage people to do what they need/want/feel like/... but facts are facts and can be said/told.
Posted on 2003-08-05 15:57:19 by sheroc
Hell, Href doesnt seem to work well :S the link pointed where it should point to, but a click took me to a wrong place, is it only me ( IE got mad??? duno xD ) ?

Anyway, the good old way ;(

http://www.freewebs.com/remains/NASM32PACKAGE.exe

Bye
Posted on 2003-08-05 16:01:13 by sheroc
Hi Drocon,

I did try to be diplomatic, I'm just find it funny when the fly by night off and on assemblers tell me that MASM is always wrong and they're always right. It's a stupid argument and it doesn't make alot of difference in the end because almost everybody uses MASM and it is and for a long time to come will be the most powerful assembler out there. Let's face it, it was around before all of the others and probably will be around long after them as well, it *has* the right syntax because it *is* the standard that all others are measured against, if one of the newer assemblers uses it's own syntax it is a deviant branch nothing more.
Posted on 2003-08-05 16:02:35 by donkey

P.S.: Yes, I tried FASM and it has a lot of common thing with NASM; for FASM I just said I dislike its syntax ( and import/exports... ) although is the second assembler I would use if there was no NASM.


The import and export sections, they can be a bit of work, the imports, no problem if you use Vortex scan.exe (search the board if you're interested), the exports aren't really any problem either if you use the export macros (exports I only use when doing DLLs, which isn't often, I've at some occasions used the exports for debugging (during some porting from masm to fasm, long time ago) ).

I once had the choice betwene MASM and NASM (before I knew of FASM), I chose MASM because I couldn't find any official site for NASM (as I previously said found some dead links to some page referead to as the official homepage of NASM), and I thought that NASM really was dead. As I learned more and more about FASM I soon started to like it, and not too soon after that FASM found it's place in my heart as my assembler of choice. :)
Posted on 2003-08-05 16:14:39 by scientica
The common reply from a NON diplomatic, "just trapped in the trap" person ( the forced "wanna-scape" ).

See how I only spoke about facts, I even said MASM has a big support ( thats another fact, and I wrote it down -I am not one of those THATS SHIT, THIS IS GOOD zealot- )...

I think I managed to be objective ( I can proof the facts I wrote down here )...

Bye :(
Posted on 2003-08-05 16:19:22 by sheroc
Returning to the problem of the thread, talk about MASM is only significative because, how says
donkey, many people uses it. Then, by any reason, they find some unix clone and think:
"I'd like to use my MASM codes here". But there is not port of MASM for unix clones. Well, there
are various options: NASM, FASM, GNU AS, all open source; and also it seems that the MASM
licence forbides use MASM to create programs to OSs other than M$ OSs.

I only wanted to say that, in assembly programming, readibility not only depends of the
assembler syntax. The readibility, and best, the comunicability of the program depends a
lot of the self programmer. I've seen a lot of assembly source code without 'invokes' nor '.if',
and I understand it perfectly; maybe so much time using dissasemblers to learn new things :).
Is logic to think that in assembly language readibility and comunicability must to be different
than other languages. Really, nobody needs use any MASM constructs to program. The
example that I attached only demonstrates how easy is to do something seemed with other
free assembler, ported to Linux.

To end. A time, reading some texts about style and OOP, I though that was necessary to do
all the possible for the "readibility" of our asm codes. But other papers, like the sbin notes about
opcodes, showed me that readibility and style in asm languages has its self features. Program
is a art if you write in "real" assembly, in the sense that you know well the opcodes and how
works the processor for which you are writting. Why? because a work of art is something
unique. Unfortunally, our time is not waiting for any art :(
Posted on 2003-08-06 16:53:54 by n u M I T_o r
I agree with numit in that way, in the way that if you still using such construct, preferible you know what you are doing with that structs ( i refer if, switch, while, proc, and other constructions), i remember that some one say in the past when i was talking about the procs that not all can be automated, and .. one day after I upgrade a macro for can suport the use of locals only using esp, he say that masm can not handle this, only it no generate the prologue and the epilogue and the user need take care of is locals.... and I do in one day???, with a macro??, that is not like programming the source, maybe ms dont like that type of function without epilogue and they doint provide the suport for the users of masm directly in this app, yes they have is own reasons for not support this... maybe they dont see in the way that i see, that was very easy to implement... like i say, maybe with your preprocesor can suport it!!!.

For what this???, hey if you know ok a structure or construction you can do it ok with or without doing it automatic.


I reenter to school now (no more vacations).

Maybe nasm have some years out there yes, the "oficial page" is dead yes (almost all the link in google" and some resources that try link to the "oficial page" but outdated), but i like and I keep learning asm, also if you can code some in plain asm, then you can more easely use others assemblers, and understand more how a programm look in the machine, if you need to use (gas is a little xtrange, more typing, at least for me).

I will suport nasm like this try for support in other "more sofisticated way" the struct and unions, I am not a very skilled programmer, but hey I try to do a good modification, I was near very (but I only cover my spectatives) :), that was my first try and i learn things when coding about nasm and in general assemblers, the version 1 is not released.. in the future, but need some more work on a lot of diferent things... but are only numbers ;), you can use nasm in is actual an anterior versions, but use the actual.

You say nasm have no suport, hey!! are there the source code!!!, is there a list of develop etc. You can contribute... if I can what you no??..... sure if you want, ok ok what I do is not near now to be a contribution.. but was a try to help ;), and I am happy with my coding I start from knowing nothing and continue and get nasm version modificated working, maybe this can by the first step, or can be performed in a complete diferent way that i think this implementation......, but the idea still there :D


Hiya dudes, keep in mind that you can code asm, with or without constructions like hll.

Nice day.
Posted on 2003-08-10 21:23:51 by rea
"Maybe nasm have some years out there yes, the "oficial page" is dead yes (almost all the link in google"..."

Don?t take me bad please... why the hell is everybody saying or implying that nasm home page is death?! Won?t it be that you all dont even know which is nasm home page??? check nasm.sourceforge.net ( it has been the official home page since a lot of time ) and it is "vivito y coleando" ( alive and moving its tail ).

"Hiya dudes, keep in mind that you can code asm, with or without constructions like hll."

If you use HLL alike... that part WON?T be asm... so your source won?t be 99% asm...


Bye :D
Posted on 2003-08-11 04:56:44 by sheroc
I'd have to disagree with you here donkey. I don't think Masm does it the right way. Variables to me are the address of the value you're looking for, be it constant or local. Hence moc eax,var should mov the address into eax.

Yes the Masm syntax can be easier (less typing) but it introduces an extra level of abstraction. As asm programmers I don't think we can agree with as its the very thing most of us dislike.
Posted on 2003-08-11 18:07:19 by Eóin