Logiciel de Base Stage ADT : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Séance 1 : Introduction au langage C et GDB)
(Séance 3 : Modes d'adressages)
 
(3 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 30 : Ligne 30 :
  
 
=== Séance 1 : Introduction au langage C et GDB ===
 
=== Séance 1 : Introduction au langage C et GDB ===
* Un exemple de code C :
+
{{boîte déroulante
   /* Auteur initial : Matthieu Moy <Matthieu.Moy@imag.fr>
+
  | titre=Exemple de code C
  Ensimag, Grenoble INP */
+
   | contenu=
  #include <stdio.h>
+
<source lang="C">
  #include <unistd.h>
+
/* "main" est la fonction principale */
  void f(void);
+
  void calcul_et_imprime_fact(int n);
+
  int fact(int n);
+
  int main (void)
+
  {
+
    unsigned i;
+
    short int j;
+
    printf ("Bonjour\n");
+
    f();
+
    j = 0;
+
    for (i = 0; i <= 1000; ++i) {
+
      j = j + i;
+
    }
+
    printf ("i=%i\n", i);
+
    calcul_et_imprime_fact(10);
+
    i = 10;
+
    while (i >= 0) {
+
      --i;
+
    }
+
  }
+
  
  void f(void)
+
/* Auteur initial : Matthieu Moy <Matthieu.Moy@imag.fr>
  {
+
Ensimag, Grenoble INP */
    printf ("Appel de f()\n");
+
#include <stdio.h>
 +
#include <unistd.h>
 +
void f(void);
 +
void calcul_et_imprime_fact(int n);
 +
int fact(int n);
 +
int main (void)
 +
{
 +
  unsigned i;
 +
  short int j;
 +
  printf ("Bonjour\n");
 +
  f();
 +
  j = 0;
 +
  for (i = 0; i <= 1000; ++i) {
 +
    j = j + i;
 
   }
 
   }
 
+
   printf ("i=%i\n", i);
   void calcul_et_imprime_fact(int n)
+
   calcul_et_imprime_fact(10);
   {
+
  i = 10;
    int res = fact(n);
+
  while (i >= 0) {
    printf ("fact(%i) = %i\n", n, res);
+
    --i;
 
   }
 
   }
 +
}
 +
 +
void f(void)
 +
{
 +
  printf ("Appel de f()\n");
 +
}
 +
 +
void calcul_et_imprime_fact(int n)
 +
{
 +
  int res = fact(n);
 +
  printf ("fact(%i) = %i\n", n, res);
 +
}
  
  int fact(int n)
+
int fact(int n)
  {
+
{
    printf ("Calcul de fact(%i)\n", n);
+
  printf ("Calcul de fact(%i)\n", n);
    if (n <= 1) {
+
  if (n <= 1) {
      return 1;
+
    return 1;
    } else {
+
  } else {
      return n * fact(n - 1);
+
    return n * fact(n - 1);
    }
+
 
   }
 
   }
* Le tutorial [[GDB]] se trouve dans : {{Url Git ldba|basedir=c/1b-gdb-valgrind/gdb/gdb-tutorial.c}}
+
}
 +
</source>
 +
<br>
 +
}}
 +
* Le tutorial [[GDB]] se trouve dans : {{Url Git ldba|file=c/1b-gdb-valgrind/gdb/gdb-tutorial.c}}
 
* QCM de révision, à faire avant la séance suivante : [[QCM GDB]]
 
* QCM de révision, à faire avant la séance suivante : [[QCM GDB]]
  
Ligne 87 : Ligne 95 :
 
=== Séance 3 : Modes d'adressages ===
 
=== Séance 3 : Modes d'adressages ===
  
* Transparents : {{Url Git ldba|file=asm/2-modes-adressages/langage-dassemblage-syntaxe.pdf}}
+
* Transparents : {{Url Git ldba|file=asm/2-modes-adressages/slides/syntaxe-asm-slides.pdf}}
 
* Séance machine : [[LdB Modes d'adressages]]
 
* Séance machine : [[LdB Modes d'adressages]]
 
* [[QCM Modes d'adressage]]
 
* [[QCM Modes d'adressage]]

Version actuelle en date du 19 juillet 2012 à 12:50

Enseignant : Claire Maiza

Déroulement du cours

Nous aborderons les bases de la programmation en langage d'assemblage Pentium.

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.

Ce cours est basé sur les supports de cours et séance de TD/TP effectués en filière apprentissage et en 1A. Pour les curieux, vous trouverez le contenu de ces enseignements en suivant ces liens :

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

Planning

Séance 1 : Introduction au langage C et GDB

Séance 2 : Introduction à l'assembleur Pentium

Séance 3 : Modes d'adressages

Séance 4 : Pile et appels de fonctions

Séance 5 : Appels de fonctions