Assembleur

Fermé
alpha - 9 nov. 2014 à 19:49
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 10 nov. 2014 à 18:31
Bonjour,

Après deux ans de programmation C et 6 mois de programmation Python, je voudrais me tourner vers l'assembleur. Sauf que j'ai l'impression ( après quelques recherches sur le net) qu'il y a plein d'assembleur différent (en fonction de l'OS, en fonction du processeur et aussi des philosophie de code différentes).

Pourriez vous m'indiquez tous les types de langage Assembleur qui existe et leur différence ou alors si vous avez un lien vers une page web qui explique tous ca, je veux bien...

Merci

2 réponses

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
Modifié par gravgun le 10/11/2014 à 18:32
'lut, aucune page web, ni post de forum ne peut énumérer la totalité des langages assembleur qui existent... une des raison est que certains sont fermés (genre l'USSE des m*rdiques GPU mobiles PowerVR), et que, comme tu le sais déjà, il en existe plein.
Je me contenterais du coup de t'en citer les plus connus.

Une différence majeure présente dans une bonne partie des langages assembleur est la différence entre la syntaxe AT&T et Intel; l'Intel est plus simple et "jolie", et la AT&T reste populaire car elle est celle par défaut des outils de compilation GNU GCC (& co).
Après, a chaque architecture ses opérations et opérandes:
x86_32: aussi appelé i386 ou x86. Architecture Intel, présente dans tous les ordinateurs de bureau (oui, aussi les procos AMD).
x86_64: aussi dit x64 ou AMD64 (CPUs Intel aussi). Sur-ensemble 64 bits du x86_32, présent dans les PC 64 bits.
ARM: présent dans les systèmes embarqués et téléphones portables. Plusieurs versions existent (ARMv6, ARMv7)
ARM64: version 64 bits de l'ARM, c'est en fait ARMv8, existe dans l'iPhone 5 par ex.
MIPS: dans certains systèmes embarqués aussi; plus rare.
Et bien d'autres...

Après, passé ça il y a les spécificités de chaque logiciel assembleur; je peux citer TASM, NASM, GNU AS, MASM... qui disposent tous de leur propre syntaxe, et de leur propre documentation la décrivant ;)
Pour ce qui est des différences entre OS, c'est coté code et pas coté syntaxe que ça se passe: on n'appelle pas une fonction d'API Windows comme on appelle un syscall UNIX. De même sous Windows il y a l'enfer des conventions d'appel, qui fait qu'on appelle pas une fonction A et B de la même manière...

Bref, pas de comparaison faisable vu le "nombre d'assembleurs" qu'il existe :/
Toutefois le net regorge d'informations sur chacun d'entre eux.
from human import idiocy
del idiocy
1
Célien Messages postés 5729 Date d'inscription jeudi 8 mai 2008 Statut Membre Dernière intervention 9 septembre 2021 1 993
Modifié par Célien le 10/11/2014 à 18:41
Salut,

Il existe presque autant d'assembleurs que de microprocesseurs, tu voudrais programmer pour lequel ?
Ceci dit une fois que tu as appris l'un d'entre eux, le principe reste le même d'un processeur à l'autre à part la syntaxe et les capacités qui diffèrent, donc pour l'apprentissage n'importe quel assembleur va bien. Tu peu voir par exemple en français ce portail sur l'assembleur.
0