I've just begun reading the AoA book, and the author points out that one of the benefits of Assembly is that it is faster than any HLL and can provide algorithms that HLL's cannot.
Personally I would say that the only time you need assembly language in the modern world is if you are writing an operating system, anything else which is very low level, or with something which is very speed critical.
Assembly language programming is sometimes advantage because it's written keeping the processor in mind.. that is the limitations of processor are taken care and thus the code turns out optimized one.. also writing the code in assembly removes the necessity of cross compilation (carried out for many processors) and thus execution times are faster...
hope this helps a bit..
Assembly language programming is sometimes advantage because it's written keeping the processor in mind.. that is the limitations of processor are taken care and thus the code turns out optimized one.. also writing the code in assembly removes the necessity of cross compilation (carried out for many processors) and thus execution times are faster...
hope this helps a bit..
I'm not sure I understand any of that. Ignoring macros for the moment, assembly language mnemonics are just a more readable version of machine code instructions; there is more or less a one to one correspondence between them. It is possible to turn out assembly code as poorly written as code in any other language. Further, since assembly code is just a disguised version of machine code, it is very processor specific.
I may be wrong, but I suspect abhisdm is confusing assembly language with .NET assemblies.
Sincere apologies to those who were confused by my reply .... All i wanted to say is that many a times its preferred that the codes are written in assembly wherever possible...
If m wrong.. please correct me....
regards
I'm a relatively accomplished C and assembly programmer and use the OpenWatcom C/C++ development environment.
When I began programming in 1982 the compilers were pretty good but you could still get sizeable speed advantages by coding in assembly. With the advent of multi-stage pipelines and parallell execution units it has become increasingly difficult to get any "classical" speed advantage by hand-coding in assembly. One application I worked with a few years ago had an extremely tight loop (10 lines of C code) in a function that I thought I'd optimize. Several hours and versions of code later I had managed to best the C code by a few percent - definitely not worth the effort.
Since I still write fast applications I've turned to another advantage of assembly which is inlining, using OpenWatcom's "#pragma aux" construct:
Suppose you have a loop which scans though a buffer and depending on what it finds moves data from the buffer elsewhere. Ususally you would use memcpy which calls a small procedure containing a load-store-iterate loop. Using the Watcom construct the move operation(s) are inlined with the C-code which gives two performance advantages, namely that I reduce the number of parameter preparation/call/return/stack fixups and that I lessen the risk of an instruction cache miss (since I can ususally assume that my memcpy procedure won't be anywhere near - address-wise - the loop that calls it which will, in all probability cause, a miss). Because of the reduced overhead my entire loop (usually) becomes smaller which also increases the probability of staying in the cache.
This may sound like splitting hairs but you get a great speed advantage if you're able to keep to the L1 cache without having to stoop so low as to resort to L2, L3 or even RAM (God forbid!).
No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.