I've never coded in ASM myself, but I've been told it is quality stuff. Hard, but quality if you know what you're doing. I have one question, why ASM? Why not use C/C++/Java/C#?
You can read this text from Hutch's homepage:
Why Write in 32 bit assembler ?
Assembler affords the programmer looking for additional performance a three pronged approach in the pursuit of high performance software.
1. High performance executable files.
Executable programs built with Microsoft assembler have advantages in both size and speed when written correctly that is beyond the capacity of the best compilers. Performance critical software is a natural target for pure assembler programs.
2. Dynamic link libraries.
MASM can build very high performance dynamic link libraries that can be used by MASM, Visual C/C++ and Visual Basic as well as any other language that can call a DLL. This puts minimum size high performance files within the reach of any language that can call a DLL and allows the programmer to design processor intensive algorithms that are beyond the reach of the native language they are using.
3. Library modules for Microsoft Visual C/C++ programs.
MASM produces the identical object module format that is used by the Visual C+C++ compilers so the C/C++ programmer can build modules or libraries in MASM and directly link them into their own C/C++ programs. This allows the C/C++ programmer to target critical areas of their code in a very efficient and convenient manner, graphics manipulation, games, very high speed data manipulation and processing, parsing at speeds that most programmers have never seen, encryption, compression and any other form of information processing that is processor intensive.
For programmers who are not familiar with 32 bit Windows assembler, there is speed and performance available that you may never have seen before and contrary to popular legend, if you can write a Windows application in C/C++, Basic, Pascal or other similar compiler based languages, you can write it in MASM with very similar looking code if you bother to learn the MASM high level syntax.
Why Write in 32 bit assembler ?
Assembler affords the programmer looking for additional performance a three pronged approach in the pursuit of high performance software.
1. High performance executable files.
Executable programs built with Microsoft assembler have advantages in both size and speed when written correctly that is beyond the capacity of the best compilers. Performance critical software is a natural target for pure assembler programs.
2. Dynamic link libraries.
MASM can build very high performance dynamic link libraries that can be used by MASM, Visual C/C++ and Visual Basic as well as any other language that can call a DLL. This puts minimum size high performance files within the reach of any language that can call a DLL and allows the programmer to design processor intensive algorithms that are beyond the reach of the native language they are using.
3. Library modules for Microsoft Visual C/C++ programs.
MASM produces the identical object module format that is used by the Visual C+C++ compilers so the C/C++ programmer can build modules or libraries in MASM and directly link them into their own C/C++ programs. This allows the C/C++ programmer to target critical areas of their code in a very efficient and convenient manner, graphics manipulation, games, very high speed data manipulation and processing, parsing at speeds that most programmers have never seen, encryption, compression and any other form of information processing that is processor intensive.
For programmers who are not familiar with 32 bit Windows assembler, there is speed and performance available that you may never have seen before and contrary to popular legend, if you can write a Windows application in C/C++, Basic, Pascal or other similar compiler based languages, you can write it in MASM with very similar looking code if you bother to learn the MASM high level syntax.
Coding with asm is more fun than with HLLs.
No bloat. :)
I have a VB program that is over 350kb (not including the controls or runtimes) and the asm version is on 25kb!
I have a VB program that is over 350kb (not including the controls or runtimes) and the asm version is on 25kb!
Don't compare VB to ASM, its not practical. Maybe Delphi to VB, that's fine.
Don't compare VB to ASM, its not practical. Maybe Delphi to VB, that's fine.
Agreed. How about Java to ASM? With Java, the fact that you can write code that will run on any platform really appeals to me. With ASM, the fact that you must rewrite your application for each type of CPU doesn't impress me. I tend to write code for Intel/AMD on Win32, Intel/AMD on Linux/UNIX, or Sparc on Solaris.
Java is sooooooooo slooooooooowwwwwwwww.
Java is sooooooooo slooooooooowwwwwwwww.
IMO, it's portability is worth the speed. It's not like it was 5 years ago, with 3ghz CPUs the speed of Java has gotten much better.
well then java is now obsolete due to NET ;)
anyway for portable applications c/c++ turns out to be just as portable most of the time and vastly superior in terms of performance.
I never understood the importance or selling points of java and I never will, to me it's just another language I don't care about.
anyway for portable applications c/c++ turns out to be just as portable most of the time and vastly superior in terms of performance.
I never understood the importance or selling points of java and I never will, to me it's just another language I don't care about.
well then java is now obsolete due to NET ;)
Whoa, you obviously don't know anything about either platform. ;)
with 3ghz CPUs the speed of Java has gotten much better.
How many here have a 3ghz cpu? And it's sooooooooooo slooooooooooow at 3 ghz. Anything less and ...:)
Whoa, you obviously don't know anything about either platform.
Uh, oh.Whoa, you obviously don't know anything about either platform. ;)
no you just happen to be one of those 1% that need platform portability :p
the rest of us just happen to use 1 platform ;)
As for the .NET comment, it is possible that it will be MS' strategy to go for the runs on "several platforms" routine.
If they do Sun can kiss their java ass goodbye. Nobody does marketing better than MS :P
How many here have a 3ghz cpu? And it's sooooooooooo slooooooooooow at 3 ghz. Anything less and ...
Good Point.The counter argument to using asm for speed reasons is always it is not necessary because of the processing power of the latest computers. But many people especially in developing countries like me don't have the luxury of these computers.
How many here have a 3ghz cpu? And it's sooooooooooo slooooooooooow at 3 ghz. Anything less and ...:)
I'm not talking about client computers. My development is done for server side applications deployed on a clustered Sparc environment. Speed isn't a factor.
Agreed. How about Java to ASM? With Java, the fact that you can write code that will run on any platform really appeals to me. With ASM, the fact that you must rewrite your application for each type of CPU doesn't impress me. I tend to write code for Intel/AMD on Win32, Intel/AMD on Linux/UNIX, or Sparc on Solaris.
check out asmutils at
http://linuxassembly.org/
maybe some day thay will add win32 to the list there
no you just happen to be one of those 1% that need platform portability :p
the rest of us just happen to use 1 platform ;)
Once again, I think this just comes down to what area of computing we target. From you comments, I would think ASM coders are more involved in client side programming. I personally am on the server side.
As for the .NET comment, it is possible that it will be MS' strategy to go for the runs on "several platforms" routine.
If they do Sun can kiss their java ass goodbye. Nobody does marketing better than MS :P
Microsoft build software to help an operating system not owned by them? Are you kidding? Even so, I'd hope developers and IT managers are smart enough to not be influenced soley by an ad on TV. Being a proven solution is what counts. J2EE has been proven many times. .NET has not.
hope developers and IT managers are smart enough to not be influenced soley by an ad on TV.
But that's exactly what does happen. Not necessarily from TV but the trade journals all spouting what their fed by the companies. Ya gotta have this language now because yada, yada, yada. It's the latest and greatest! All of a sudden everyone had to use C++ and asp and .net and C# an ado and etc. to the point that even the small company guy with just a couple of programmers feels the need to use languages he doesn't have to use.But that's exactly what does happen. Not necessarily from TV but the trade journals all spouting what their fed by the companies. Ya gotta have this language now because yada, yada, yada. It's the latest and greatest! All of a sudden everyone had to use C++ and asp and .net and C# an ado and etc. to the point that even the small company guy with just a couple of programmers feels the need to use languages he doesn't have to use.
Yeah, it's really sad IMO. :(
I use asm artistically - I've never sold any software and don't have plans to.
When I program in asm the instructions used are exactly what are executed by the processor. There is a certain appeal to this kind of precision. It is getting to where the processor itself has too many abstractions even for the assembly language programmer to keep track (speaking about optimizing code for speed on a Hyperthreading processor). With advanced tools I think these difficulties can be overcome.
Slow software really drives the hardware market in the US. MS Office XP is such a sluggish bunch of pig programs. Yeah, I can do a lot with it, but don't try to work on much else at the same time. Most people use <10% of the features of Office, but 10% of what they do use is different from user to user.
All I know about Java is that one of the main programs at work was re-coded in it (from Delphi) and it is as slow as all hell. Nice thing is that they can add features relitively quick - they need to because it's really quite broken. A solution that is mostly clientside would have been perfect, but management doesn't think so. Management wants it a "web" application - maybe they have future plans to plug into their PDA's. Just because an application needs to get data from a server or communicate on the network, does not mean it needs to be a "web" application.
When I program in asm the instructions used are exactly what are executed by the processor. There is a certain appeal to this kind of precision. It is getting to where the processor itself has too many abstractions even for the assembly language programmer to keep track (speaking about optimizing code for speed on a Hyperthreading processor). With advanced tools I think these difficulties can be overcome.
Slow software really drives the hardware market in the US. MS Office XP is such a sluggish bunch of pig programs. Yeah, I can do a lot with it, but don't try to work on much else at the same time. Most people use <10% of the features of Office, but 10% of what they do use is different from user to user.
All I know about Java is that one of the main programs at work was re-coded in it (from Delphi) and it is as slow as all hell. Nice thing is that they can add features relitively quick - they need to because it's really quite broken. A solution that is mostly clientside would have been perfect, but management doesn't think so. Management wants it a "web" application - maybe they have future plans to plug into their PDA's. Just because an application needs to get data from a server or communicate on the network, does not mean it needs to be a "web" application.
When I program in asm the instructions used are exactly what are executed by the processor. There is a certain appeal to this kind of precision.
That's what has caught my interest. :D