Linked by Thom Holwerda on Mon 6th Aug 2012 21:50 UTC, submitted by iseyler
General Development I asked for more of this, and I got it. "There has been much interest in assembly lately (whether the real 6502, or the fictional DCPU-16; I even created my own virtual 8-bit CPU called i808 in 2007), but none of this attention focuses on the architecture that is most popular in today's computers. If you are reading this on a desktop, laptop, or server then your computer is most likely using x86-64 (or x86). x86-64 is the 64-bit superset of the 32-bit x86 architecture and any modern CPU from AMD or Intel supports it. This document will focus on the most used parts of x86-64."
Thread beginning with comment 530138
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[2]: Uh?
by moondevil on Tue 7th Aug 2012 15:55 UTC in reply to "RE: Uh?"
moondevil
Member since:
2005-07-08

Apart from learning more about the internals of the CPU, is there a good reason to learn assembly language at all these days if one just wants to develop regular apps/utilities? In my case for Linux/Ubuntu/Gnome...


If you even plan to develop:

- drivers;
- operating systems utilities;
- games;
- compilers (either ahead-of-time or JIT based);
- audio or video codecs;
- develop applications that need to run in embedded systems
- numeric code for statistics like FFT
- optimization of code compreension

Than knowing Assembly is really a must.

If you spend you time developing code in languages with native code generation (C, C++, FreePascal, D, Go), or using V8, compatible JVM or CLR then Assembly is important to understand how the high-level algorithms influences the generated Assembly.

Because you can ask to see the generated Assembly and then compare it with the algorithm.

Knowing Assembly makes it also easy to know how to manipulate JVM bytecode or MSIL, and with it perform low level meta-programming. This is how Aspects work, for example.

Another example is how Qt 5 will make use of SIMD instructions to do perform encoding conversions,
http://woboq.com/blog/utf-8-processing-using-simd.html

Reply Parent Score: 2

RE[3]: Uh?
by ilovebeer on Tue 7th Aug 2012 20:07 in reply to "RE[2]: Uh?"
ilovebeer Member since:
2011-08-08

If you even plan to develop:

- drivers;
- operating systems utilities;
- games;
- compilers (either ahead-of-time or JIT based);
- audio or video codecs;
- develop applications that need to run in embedded systems
- numeric code for statistics like FFT
- optimization of code compreension

Than knowing Assembly is really a must.

While being well-versed in asm can have advantages, saying it's a must for at least half the things you've listed is absolutely untrue.

Reply Parent Score: 3

RE[4]: Uh?
by moondevil on Tue 7th Aug 2012 20:46 in reply to "RE[3]: Uh?"
moondevil Member since:
2005-07-08

Please elaborate how it is untrue.

Reply Parent Score: 2

RE[3]: Uh?
by Soulbender on Wed 8th Aug 2012 11:34 in reply to "RE[2]: Uh?"
Soulbender Member since:
2005-08-18

- drivers;

Depends on the OS and what hardware you develop the driver for.

- operating systems utilities;

I'm not sure exactly what you qualify as os utilities and why they would require assembler.

- games;

Depends on what kind of game. If it's a demanding FPS or something, yes. If not then probably no. No asm needed for using, say, PyGame, some other tookit or iPhone/Android games.

- develop applications that need to run in embedded systems

I doubt assembler is a hard requirement for this.

Reply Parent Score: 3

RE[4]: Uh?
by moondevil on Wed 8th Aug 2012 13:26 in reply to "RE[3]: Uh?"
moondevil Member since:
2005-07-08

"- develop applications that need to run in embedded systems

I doubt assembler is a hard requirement for this.
" [/q]

Feel free to develop for these processors with anything other than Assembly

http://www.microchip.com/pagehandler/en-us/family/8bit/home.html

http://www.microchip.com/pagehandler/en-us/family/16bit/

http://www.ti.com/product/tms320vc549#feature

Sure you can try to use C, but depending on the application you'll most likely end up using Assembly to take full advantage of the scarce space or strange addressing modes not available to higher level languages.

Reply Parent Score: 2