Top Four Reasons to use Assembly Language
An old joke goes something like this: “There are three
reasons for using assembly language: speed,
speed, and more speed.” Even those who absolutely hate assembly language will admit that if speed is
your primary concern, assembly language is the way to go. Assembly language has several benefits:
speed, and more speed.” Even those who absolutely hate assembly language will admit that if speed is
your primary concern, assembly language is the way to go. Assembly language has several benefits:
• Speed. Assembly language programs are generally the fastest programs around.
• Space. Assembly language programs are often the smallest.
• Capability. You can do things in assembly which are difficult or impossible in HLLs.
• Knowledge. Your knowledge of assembly language will help you write better programs, even when using HLLs.
Assembly language is the uncontested speed champion among programming languages. An expert
assembly language programmer will almost always produce a faster program than an expert C programmer.
While certain programs may not benefit much from implementation in assembly, you can speed up
many programs by a factor of five or ten over their HLL counterparts by careful coding in assembly language;
even greater improvement is possible if you’re not using an optimizing compiler. Alas, speedups
on the order of five to ten times are generally not achieved by beginning assembly language programmers.
However, if you spend the time to learn assembly language really well, you too can achieve these impressive
performance gains.
Despite some people’s claims that programmers no longer have to worry about memory constraints,
there are many programmers who need to write smaller programs. Assembly language programs are often
less than one-half the size of comparable HLL programs. This is especially impressive when you consider
the fact that data items generally consume the same amount of space in both types of programs, and that
data is responsible for a good amount of the space used by a typical application. Saving space saves
money. Pure and simple. If a program requires 1.5 megabytes, it will not fit on a 1.44 Mbyte floppy. Likewise,
if an application requires 2 GB RAM, the user will have to install an extra GB if there is
only one available in the machine. Even on big machines with 32 or more GB, writing gigantic
applications isn’t excusable. Most users put more than 2 GB in their machines so they can run
multiple programs from memory at one time. The bigger a program is, the fewer applications will be able
to coexist in memory with it. Virtual memory isn’t a particularly attractive solution either. With virtual
memory, the bigger an application is, the slower the system will run as a result of that program’s size.
Capability is another reason people resort to assembly language. HLLs are an abstraction of a typical
machine architecture. They are designed to be independent of the particular machine architecture. As a
result, they rarely take into account any special features of the machine, features which are available to
assembly language programmers. If you want to use such features, you will need to use assembly language.
A really good example is the input/output instructions available on the 80x86 microprocessors.
These instructions let you directly access certain I/O devices on the computer. In general, such access is
not part of any high level language. Indeed, some languages like C pride themselves on not supporting any specific I/O operations. In assembly language you have no such restrictions. Anything you can do on
the machine you can do in assembly language. This is definitely not the case with most HLLs.
Of course, another reason for learning assembly language is just for the knowledge. Now some of
you may be thinking, “Gee, that would be wonderful, but I’ve got lots to do. My time would be better
spent writing code than learning assembly language.” There are some practical reasons for learning assembly,
even if you never intend to write a single line of assembly code. If you know assembly language well,
you’ll have an appreciation for the compiler, and you’ll know exactly what the compiler is doing with all
those HLL statements. Once you see how compilers translate seemingly innocuous statements into a ton of
machine code, you’ll want to search for better ways to accomplish the same thing. Good assembly language
programmers make better HLL programmers because they understand the limitations of the compiler
and they know what it’s doing with their code. Those who don’t know assembly language will accept
the poor performance their compiler produces and simply shrug it off.
No comments:
Post a Comment