web-dev-qa-db-fra.com

ASM: MASM, NASM, FASM?

J'ai effectué la programmation de ARM Assembly et j'aimerais apprendre Intel Assembler. Je continue à entendre tous ces différents F/M/N/ASM mentionnés - mais je ne sais pas comment ils se rapportent à ce que je souhaite réaliser?

Quelqu'un pourrait-il m'aider, s'il vous plaît, à m'aider à identifier ce qu'il me faudrait pour apprendre à programmer à bas niveau sur l'architecture Intel? Je ne comprends pas très bien comment les "différents assembleurs" sont en corrélation, encore plus avec x86, IA64, AMD64/x86-64, etc.

Si cela peut vous aider, je suis plus à l'aise avec les IDE Eclipse et Visual Studio 08/10.

24
user997112

MASM (Microsoft Assembler) est le populaire assembleur pour Windows. MASM est pour les applications 16 bits et 32 ​​bits (x86). ML64 est celui des sources 64 bits (AMD64/x86-64)

NASM (Netwide Assembler) est l'assembleur populaire pour Linux, mais il est disponible sur Windows aussi. NASM prend en charge les programmes 16 bits, 32 bits et 64 bits.

FASM (Flat Assembler) est disponible pour Windows et Linux. FASM prend également en charge les programmes 32 bits et 64 bits.

Je suppose donc que vous préférez choisir MASM en fonction de vos besoins.

20
Pavan Manjunath

Juste pour en dire plus, RosAsm est un assembleur Windows 32 bits seulement qui a plusieurs points intéressants comme

  • un IDE intégré, auto-compilé avec le code source disponible
  • une syntaxe inspirée de NASM
  • un système macro puissant pour la conception de langage de haut niveau
  • la particularité de stocker le code source dans les fichiers .exe et .dll produits (dans une section PE).

En ce qui concerne le support 64 bits, RosAsm n’en a pas mais un de ses contributeurs travaille actuellement sur une réécriture 64 bits (BUAsm, l’assembleur Bottom-Up).

0
Seki