Apprendre le bon assembleur

pythamede Messages postés 46 Date d'inscription samedi 23 mai 2015 Statut Membre Dernière intervention 12 juin 2024 - 5 juin 2024 à 14:14
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 - 12 juin 2024 à 20:05

Bonjour,

Bonjour à tous,

J'ai l'habitude de programmer en C avec Visual C++. J'ai parfois des séquences de code qui consomment beaucoup de temps. Pour cette raison, je voudrais apprendre à programmer en assembleur. J'ai eu l'occasion, dans le passé, de programmer en assembleur des ordinateurs divers, mais je ne connais pas du tout l'assembleur qui conviendrait à mon PC. J'ai bien vu quelques références à l'assembleur 8086 en cherchant sur Internet, mais je crains que le logiciel assembleur 8086 ne soit pas du tout compatible avec mon PC actuel.

Mon PC est récent, 12th Gen Intel Core I5-12400, et je suis sous Windows 11 64-bits.

Je voudrais savoir s'il existe des assembleurs pour ce type d'architecture et comment je peux faire pour préparer quelques bouts de code en assembleur pour ensuite les faire utiliser par mes programmes, codés en C. Également, existe-t-il des livres qui décrivent cet assembleur ?

Est-ce que quelqu'un pourrait me conseiller ?

Merci d'avance.


Windows / Firefox 126.0

A voir également:

2 réponses

PierrotLeFou
6 juin 2024 à 04:06

J'ai également déjà programmé en assembleur dans le passé.
Si je peux me permettre quelques remarques:
+ Sais-tu que le compilateur C peut optimiser son code avec l'option -O3 (par exemple).
J'ai souvent vu des gains de performance remarquables seulement en utilisant cette option.
+ Il peut être très difficile de maintenir du code mixte C / assembleur.
J'utilise C en mode de commande et non avec un IDE. Il y a l'option -S pour générer du code assembleur qui pourra t'aider.
+ Est-ce que ton algorithme est optimisé? Le meilleur code ne viendra pas à bout du pire algorithme.

1
pythamede Messages postés 46 Date d'inscription samedi 23 mai 2015 Statut Membre Dernière intervention 12 juin 2024 1
6 juin 2024 à 19:01

"+ Sais-tu que le compilateur C peut optimiser son code avec l'option -O3 (par exemple)."

Non ! Je le supposais mais je ne le savais pas. Et je ne sais pas comment utiliser cette option lorsque l'on compile à partir de l'IDE. Moi je clique sur "générer" et l'on ne propose pas d'option...Sais-tu comment faire ?
"Il y a l'option -S pour générer du code assembleur qui pourra t'aider."

Plus précisément, que fait cette option ?

"+ Est-ce que ton algorithme est optimisé? Le meilleur code ne viendra pas à bout du pire algorithme."

Oui, je sais cela. Je ne suis pas certain que coder en assembleur va accélérer le processus, car C est semble-t-il très proche du langage machine. Mais j'ai envie d'essayer.

Merci pour ta réponse. Comme je l'ai dit à yg_be, avoir accès à l'assembleur est une chose, mais il faut aussi apprendre à coder en assembleur et je cherche de la lecture à ce sujet.

Merci encore

0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 094 > pythamede Messages postés 46 Date d'inscription samedi 23 mai 2015 Statut Membre Dernière intervention 12 juin 2024
7 juin 2024 à 12:59

Je pense que les options décrites par Pierrot sont pour le compilateur GCC.

Pour celui de Microsoft, les options d'optimisation sont décrites là : https://learn.microsoft.com/en-us/cpp/build/reference/ox-full-optimization?view=msvc-170

(la page indique les options de ligne de commande mais aussi comment fixes les options à partir de l'EDI de Microsoft)

Il y a /O1 pour Minimize Size et /O2 pour Maximize Speed

https://learn.microsoft.com/en-us/cpp/build/reference/o1-o2-minimize-size-maximize-speed?view=msvc-170

Je ne suis pas sûr qu'il existe dans MSVC une option -S équivalente à celle de GCC pour accéder à une version assembleur du code C compilé.

0
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 Ambassadeur 1 556
5 juin 2024 à 15:42
0
pythamede Messages postés 46 Date d'inscription samedi 23 mai 2015 Statut Membre Dernière intervention 12 juin 2024 1
6 juin 2024 à 18:41

Merci de ta réponse. J'ai commencé à regarder ce que le lien que tu m'as envoyé me dit. Je ne suis pas sûr d'avoir compris, mais il me semble que pour avoir accès à l'assembleur, il faut le préciser au moment de l'installation de Visual Studio. Et il y  a longtemps que j'ai déjà installé Visual Studio, sans rien demander de plus ; j'espère qu'il n'est pas trop tard.

C'est encourageant ! Mais bien sûr, comme je l'ai dit dans ma question, je ne connais rien à l'assembleur en question, rien sur les instructions, rien sur les registres, rien du tout. Donc, lorsque j'aurai fait le nécessaire pour avoir accès à l'assembleur, il me faudra trouver un bouquin qui m'explique comment l'utiliser. Aurais-tu une idée ?

Je vais étudier tout cela.

Merci encore.

0
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 1 556 > pythamede Messages postés 46 Date d'inscription samedi 23 mai 2015 Statut Membre Dernière intervention 12 juin 2024
6 juin 2024 à 20:55
0
pythamede Messages postés 46 Date d'inscription samedi 23 mai 2015 Statut Membre Dernière intervention 12 juin 2024 1 > yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024
12 juin 2024 à 18:26

J'ai jeté un coup d'œil à ce livre et ça m'intéresse, mais j'ai une question. Il me faudra un logiciel pour lire les programmes et préparer des exécutables. Comment faire ? Et aussi, comment faire pour qu'un programme en C fasse appel à une routine codée en assembleur ?

Je pense que ce sont des questions bêtes, mais je suis vraiment débutant en la matière et je pose des questions de base...

0
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 1 556 > pythamede Messages postés 46 Date d'inscription samedi 23 mai 2015 Statut Membre Dernière intervention 12 juin 2024
12 juin 2024 à 20:05

As-tu lu et compris les informations suggérées le 5 juin 2024 à 15h42?

0