Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Assembly language is very important in the fields of reverse engineering and malware analysis.

In both fields the researchers rarely have the source code for the target software at hand, and so they usually have to disassemble the binary or run it under a debugger and step through the raw assembly language code to understand it.

Malware itself is often crafted in assembly language. And this is another reason why understanding assembly is essential for malware analysis.

Assembly is prominent in the demoscene, where squeezing every last bit of performance out of a system and doing so in a limited amount of space (nowadays often a self-imposed limitation, at least on a typical desktop) is important.

Assembly is also almost always the language used to write the bootloaders for operating systems. A number of operating systems have even been written entirely in assembly language.

It's also relatively popular on many embedded devices and microcontrollers, where you might not have the luxury of using a high level language, and where size and speed considerations are paramount.

Even in programs written in a high level language, critical sections are often rewritten in assembly language for the sake of getting maximum performance.

The importance of small and fast languages like assembly is likely to increase now that Moore's Law (arguably) no longer applies, and now that devices with small computers in them are starting to proliferate.



I'm not sure how popular assembly is in the modern demo scene on "normal" platforms (modern PCs, not retro platforms or embedded\mobile stuff.) The modern demo scene is mostly about cool GPU tricks written in HLSL or GLSL, which have huge advantages for both performance and space (see rendering the world with 2 triangles - http://www.iquilezles.org/www/material/nvscene2008/nvscene20...). It would be cool if the demo scene started focusing more on pushing CPUs instead of GPUs, but that would require adoption of really exotic graphics techniques that for some reason run better on a multicore CPU instead of a GPU, or a focus on something other than graphical effects, like simulation or audio processing. I agree that if you go back 10 or 15 years ago a lot of work was done in ASM, but GPUs have severely reduced that if not killed it outright.

Game engines still use a little assembly, sometimes a lot on the PS3, but often it's written with compiler intrinsics in C or C++. It also tends to be low level SIMD math code for physics, particles, audio or animation, which is stuff your average game programmer never touches.


Professional audio apps use a lot of SIMD but almost always via compiler intrinsics. It's rare that somebody will actually drop down into raw assembly. Thanks to mobile you can't afford any more to assume that x86 is the only instruction set that matters so an extra shim via a library like iOS's Accelerate makes a lot more sense than raw asm.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: