Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I would like to learn about reverse engineering, but I'm little bit confused with many different assemblies. So to say... Let me explain!

Everytime I start reading assembly tutorial it states it is for MC8600 or x86 or some other CPU. I found here explanation why there is so many assemblies. And I found here and here some useful stuff about RE and assembly. Nevertheless, I'm still little bit scared that I will be learning assembly for 2-3 months, then take some "real-world" application and won't be able to do RE because I know, let say, MC8600 assembly and it's compilled on x86 CPU.

So, the question would be... If I want to learn assembly which can be used on modern application (not only for RE), which assembly should I learn?

Thank you in advance!

share|improve this question

closed as off-topic by durron597, Snowman, MichaelT, Dan Pichelman, gnat May 6 '15 at 4:45

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions about what language, technology, or project one should take up next are off topic on Programmers, as they can only attract subjective opinions for answers. There are too many individual factors behind the question to create answers that will have lasting value. You may be able to get help in The Whiteboard, our chat room." – durron597, Snowman, Community, Dan Pichelman, gnat
If this question can be reworded to fit the rules in the help center, please edit the question.

up vote 5 down vote accepted

Most of the desktop applications are written for x86 CPUs.

Most mobile applications are written either for a virtual machine (Android) or for ARM chips.

Depending upon what kind of applications interests you, choose either x86 or ARM.

share|improve this answer
I would add that ARM is probably easier, at least to learn. Probably not to understand. – deadalnix Jul 18 '11 at 9:14

X86-assembly is comparatively complicated, for this reason it is for most colleges not the first (but second) assembly they teach students. Typically colleges recommend to first learn RISC because of its greater uniformity of registers and it being simpler in calling-convention. You can do this until you grasped the concepts, then switch to X86 no problem (as many students do): try to stay with either only Intel- or AT&T-syntax in the beginning (it is not only the order of operands that is different but also the way dereferencing works).

share|improve this answer

Once you learn one type of Assembly, the rest generally fall into place in the same category. I know enough SPARC to be able to read and generally understand ARM assembly despite never having "learned" the latter as they are both "RISC type architectures".

The argument for learning ARM in particular is fairly strong as it's used in the vast majority of mobile devices and is seeing increased use in netbooks and servers. There are rumors swirling that Apple might switch entirely to ARM for everything and Windows 8 reportedly can run on ARM machines.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.