Logiciel de Base Apprentissage

De Ensiwiki
Aller à : navigation, rechercher

Déroulement du cours

Nous aborderons en parallèle le langage C et l'assembleur Pentium (en alternant les deux).

Pour chaque cours, vous aurez à disposition le contenu utilisé en séance (transparents, exemples de code, ...), et un QCM avec corrigé en libre service. Faites l'effort de répondre à chaque QCM entre les séances de cours, pour vous assurer que vous avez bien tous les acquis, et arriver au cours suivant avec l'essentiel du cours en tête.

Supports de cours

Les supports de cours (transparents, code source, ...) sont disponibles via Git. Pour récupérer ces supports :

git clone http://github.com/moy/cours-ldb.git

Explications détaillées : LdB - Récupérer les supports de cours avec Git.

Supports utiles pour l'ensemble du cours

Travailler sur sa machine personnelle

Pour ce cours, vous aurez besoin d'un Linux (la convention d'appel utilisée n'est pas compatible avec Mac OS X, donc certains exercices ne marcheront pas sur ce système) avec bien sûr votre éditeur de texte favori, et gcc, make, gdb (avec si possible une interface graphique comme ddd), valgrind et git. Si vous travaillez sur une machine 64 bits, vous aurez aussi besoin d'installer une libc 32 bits, comme expliqué sur la FAQ des Bug Busters.

Planning

Séance 1 : Langage C (Introduction)

Séance 2 : Assembleur (Introduction)

Séance 3 : Langage C, Makefiles

Séance 4 : Assembleur (Modes d'adressages)

Séance 5 : Assembleur (Pile et appels de fonctions)

Séance 6 : Langage C (Quelques notions avancées)

Séance 7 : Git, Coding style, et lancement du mini-projet

Séance 8 : Assembleur (Appels de fonctions)

Séance ? (pendant le projet) : Édition de liens/chargement

Pour se préparer à l'examen

Corrigés de sujets d'examens passés

Projet

Polycopiés

  • Documentation supplémentaire : projet/DOCETU/projetC.pdf. Lire en particulier les sections « La section table des symboles » et « La section de relocation zone text » entre les pages 40 et 43.

Fin du projet

Les projets seront ramassés via Git, tout ce que vous avez à faire est un git commit suivi d'un git push. Vérifiez que tout est bien dans votre dépôt (pas de git add oublié).

AttentionDate limite pour le rendu des projets : mercredi 5 juin 2013, 20h (précises)


Mise en place de SSH

Compilation sur une machine 64 bits

le projet ne peut tourner qu'en mode 32 bits (d'où l'option -m32 utilisée dans le Makefile). On a besoin de la bibliothèque libelf, compilée en mode 32 bits. En principe, votre squelette contient les sources de la libelf et la compilation 32 bits est faite automatiquement pour vous.

Si ça ne marche pas, on peut aussi (sur une machine Ubuntu ou Ensilinux) installer la libelf 32 bits depuis le gestionnaire de paquets :

sudo apt-get install libelf1:i386 libelf-dev:i386

Corrections en cours de projet

Pour récupérer les corrections en cours de projet, faire une fois (remplacer « $login » par votre login telesun) :

cd ~/ipsim    # ou l'endroit où vous avez mis le projet
git remote add bugfix ssh://$login@telesun.imag.fr/~moy/ldb-apprentissage/ipsim/

puis, à chaque correction :

git pull bugfix master

Il peut être nécessaire de faire

cd TESTS/zarith/
./nettoyer_tout.sh

Aide pour le projet

Il peut arriver qu'un bug vicieux dans little_endian.c se manifeste bien plus tard dans le projet. Pour vous aider, un binaire du corrigé est fourni. Pour le récupérer (remplacer $login par votre login telesun) :

cd ipsim/SIMULATEUR
rsync $login@telesun.imag.fr:~moy/ldb-apprentissage/ipsim/SIMULATEUR/little_endian.o little_endian.o
touch little_endian.o
make check

Si le fait de remplacer votre binaire par le corrigé résous des problèmes plus loin dans la base de tests, c'est que votre little_endian.c est buggé. Pour utiliser votre version et écraser le little_endian.o corrigé, modifiez simplement little_endian.c et recompilez.

En espérant que ça aide ... ;-)