PDA

View Full Version : assembly language?


chrismoose
11-08-2006, 05:07 PM
hi.
not sure if its graphics related/dont think it is...but...i came across stuff on assembly language. But what is it and what do you do with it/how does it get used?
is there a job market for this knowledge? what kind of jobs?

cheers.
chris.

montclaris
11-08-2006, 07:45 PM
This article is a good start :

http://en.wikipedia.org/wiki/Assembly_language

The key point is assembly is (mostly) only a way to write machine code in a way understandable to a human being (eg "MOV" instead of "01110001" :) ). There is no change in the logic / number of basic elements between assembly and machine code. Hence it is closer to the "computer native language" than high level languages.

This has the following drawback :
- an assembly is hardware dependant, hence it usually requires more work to port to other platforms. The mnemonics may be similar though, which is an advantage over machine code.
- you have to understand well the "mechanics" of the hardware. This is much less important with high level languages
- it's rather counter intuitive to code assembly, and takes longer.

Nowadays it has only a few (arguable) advantages:
- most importantly when working with hardware specific stuff (eg drivers)
- when you want to do *extreme* optimization of running time in a program spending most of computation time running a specific code segment. It is *sometimes* possible to write this part of the code using assembly, and if you are good at it obtain a performance gain.
- casually if you plan on using hardware specific instruction not implemented in your compiler (because it's recent). It's been the case with Intel's SIMD instruction during a few years.

Regarding the second point, many will argue that modern compiler optimizers of high level language will outperform you, and you waste time with assembly. Or the performance gain is not worth the headache / cost in coding time / loss in portability.

So is there any room for assembly in modern softwares ?
Probably not. not much...
Jobs for an assembly programmer : YES if you don't code assembly :)

Oh wait... What about every system for which no high level language compiler exist ?
You just open a book of electronic components and you'll find plenty of microcontrollers, and someone has to code assembly to make them work. But i don't know if this would qualify as software engineering ? These components are everywhere in your everyday life though. But this is usually "short and straight" code. Not really the same kind as computer softwares.


Just my 2 cents
monk

chrismoose
11-08-2006, 08:00 PM
Monk,

Thanks for that!!:) some good points there. will read the wikipedia link.

cheers.

chris.

CGTalk Moderation
11-08-2006, 08:00 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.