Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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

3 Answers 3

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
1  
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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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