Logiciel de Base
Un article de Ensiwiki.
Sommaire |
Equipe pédagogique
N'hésitez pas à contacter vos enseignants de CTD si vous avez des questions.
Groupe 1 (vendredi 14h) : Christophe Rippert
Groupe 2 (lundi 11h15) : Matthieu Moy
Groupe 3 (lundi 9h45) : Guy Mazaré
Groupe 4 (jeudi 8h15) : Christophe Rippert
Groupe 5 (jeudi 9h45) : Franck Hetroy
Groupe 6 (vendredi 15h30) : Olivier Muller
Supports de cours
Séance 1
Des transparents d'introduction au cours sont disponibles. On donne aussi le code des exemples utilisés en classe.
Séance 2
On fournit des transparents sur la chaine de compilation, ainsi que le code des exemples utilisés en classe.
Séance 3
Cette séance se fait en salle machine. Les manipulations à effectuer sont décrites sur cette page.
Séance 4
Des transparents d'introduction à l'assembleur sont disponibles.
Séance 5
Cette séance se fait en salle machine. Les manipulations à effectuer sont décrites sur cette page.
TPs en temps libre
Ces TP peuvent être réalisé en binôme ou monôme (mais le fait d'être seul n'entrainera pas de bonus dans la notation).
La page Erreurs fréquentes en assembleur contient des informations pouvant vous aider à mettre au point vos TP.
Les dates de rendu de TP sont fermes : il n'y aura aucune extension accordée et tout retard sera sanctionné par un malus sur la note. Les sujets des TP vous sont donnés longtemps avant la date de rendu afin de vous permettre d'organiser au mieux votre travail dans les différentes matières.
TPL1 : pratique du langage C
Le sujet en PDF détaille tout ce que vous devez savoir pour réaliser ce TP. Vous complèterez le fichier tp1.c contenu dans cette archive ZIP.
Le TP doit être rendu sur Teide au plus tard le vendredi 5 mars à 18h00.
La correction du TPL1 est disponible pour vous aider à faire le TPL2.
TPL2 : implantation de tris en C et assembleur
Le sujet précise le travail à réaliser. On fourni les fichiers de départ dans une archive ZIP.
Le TP doit être rendu sur Teide au plus tard le vendredi 5 mai à 18h00.
Ce TP comporte une partie en C qui peut être implantée immédiatement, et une partie en assembleur que vous pourrez réaliser après la séance 9 (vous pouvez réfléchir à l'algorithme avant mais vous aurez besoin de savoir appeler des fonctions en assembleur pour réaliser la traduction demandée). Il est vivement recommandé de ne pas attendre la fin du semestre pour commencer ce TP qui est significativement plus long que le premier.
La fraude
La fraude est sévèrement sanctionnée à l'Ensimag. La Charte des projets et TP précise ce que vous ne pouvez pas faire pendant les TP : en résumé, nous vous encourageons à discuter de vos problèmes et solutions avec vos camarades, mais il est formellement interdit de copier du code (même une petite fonction simple). En cas de code dupliqué, les enseignants ne chercheront pas à savoir qui a fourni le code et qui l'a copié : toutes les équipes seront sanctionnées.
Archive des examens (avec correction)
Documentations intéressantes
- Makefile : Apprendre à écrire et utiliser un Makefile, ou cette autre introduction aux Makefiles.
- Catégorie:Assembleur : les articles d'EnsiWiki qui parlent d'assembleur.
- Portail:C : les articles d'EnsiWiki sur le langage C (plus particulièrement, pour les débutants qui ne connaissent que l'Ada, De l'Ada au C décrit quelques pièges à éviter).
- Intel Code Table : un récapitulatif des instructions utiles sur une feuille recto-verso. Attention, ce document utilise la syntaxe Intel, l'ordre des opérandes est inversé par rapport à la syntaxe GNU que nous utilisons.
- Polycopié : programmation en assembleur GNU sur des microprocesseurs de la gamme Intel (distribué en cours, ne pas imprimer)
- Feuille recto-verso résumant les commandes de base de GDB
Quelques liens pour aller plus loin
Ces documentations ne sont nécessaires ni pour faire les TP, ni pour l'examen, mais peuvent être utiles à ceux qui veulent aller plus loin, ou bien s'amuser un peu.
Assembleur
- x86 Assembly : Un livre en ligne sur l'assembleur Intel.
- Documentation de référence Intel (jeu d'instruction, conventions de liaison, ...)
- IA-32 Software Developer Manuals La doc officielle Intel sur leurs procos, complète (mais assez peu explicite sur les questions de performances). Ce qui vous intéresse, ce sont les IA-32 Software Developer Manuals à proprement parler, volume 1 à 3. Commencez par le 1, c'est une bonne introduction à l'architecture x86 (voyez par vous-même comment c'est trop crade du dedans), le 2 est une référence et le 3 n'est probablement utile qu'à ceux qui savent déjà pourquoi, ou à ceux qui ont toujours rêver de faire leur propre ptit OS / noyau.
- Software optimization : Une des (La ?) références, sur l'optimisation bas niveau, plus particulièrement l'ASM sur Pentium-compatible, et à jour. Pas du tout pour les débutants, mais une bonne lecture pour le programmeur averti. Notamment, l'auteur a des opinions que ne partagent pas tout le monde (p.ex. que l'on devrait faire de grosses routines au lieu de subdiviser, et ne faire des sous-fonctions que lorsque strictement nécessaire).
Autre
- Manuel de GNU Make (en anglais)
- Manuel de GDB (debugger)
- "Big endian" et "Little endian" .
- Executable and Linkable Format (ELF)
- CoreWar : un jeu à base d'assembleur, 100% Geek !
(n'hésitez pas à ajouter d'autres liens intéressants)

