Changes between Version 19 and Version 20 of AS6-TME-B1
- Timestamp:
- Feb 9, 2022, 10:43:35 AM (3 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
AS6-TME-B1
v19 v20 659 659 ''''''''''''''' 660 660 }}} 661 1. Vous avez appris à écrire des programmes assembleur, mais parfois il est plus simple, voire nécessaire, de mélanger le code C et le code assembleur. Dans l'exemple ci-dessous, nous voyons comment la fonction `syscall()` est écrite. Cette fonction utilise l'instruction `syscall`.\\Deux exemples d'usage de la fonction `syscall()` pris dans le fichier ` tp2/4_libc/ulib/libc.c`661 1. Vous avez appris à écrire des programmes assembleur, mais parfois il est plus simple, voire nécessaire, de mélanger le code C et le code assembleur. Dans l'exemple ci-dessous, nous voyons comment la fonction `syscall()` est écrite. Cette fonction utilise l'instruction `syscall`.\\Deux exemples d'usage de la fonction `syscall()` pris dans le fichier `04_libc/ulib/libc.c` 662 662 {{{#!c 663 663 1 int fprintf (int tty, char *fmt, ...) … … 899 899 ''''''''''''''' 900 900 }}} 901 1. Vous n'allez pas à avoir à écrire un Makefile complètement. Toutefois, si vous ajoutez des fichiers source, vous allez devoir les modifier en ajoutant des règles. Nous avons vu brièvement la syntaxe utilisée dans les Makefiles de ce TP au cours n°1. Les lignes qui suivent sont des extraits de ` 1_klibc/Makefile` (le Makefile de l'étape1). Dans cet extrait, quelles sont la `cible` finale, les `cibles` intermédiaires et les `sources`? A quoi servent les variables automatiques de make? Dans ces deux règles, donnez-en la valeur.901 1. Vous n'allez pas à avoir à écrire un Makefile complètement. Toutefois, si vous ajoutez des fichiers source, vous allez devoir les modifier en ajoutant des règles. Nous avons vu brièvement la syntaxe utilisée dans les Makefiles de ce TP au cours n°1. Les lignes qui suivent sont des extraits de `03_klibc/Makefile` (le Makefile de l'étape1). Dans cet extrait, quelles sont la `cible` finale, les `cibles` intermédiaires et les `sources`? A quoi servent les variables automatiques de make? Dans ces deux règles, donnez-en la valeur. 902 902 {{{#!make 903 903 kernel.x : kernel.ld obj/hcpu.o obj/kinit.o obj/klibc.o obj/harch.o … … 923 923 ''''''''''''''' 924 924 }}} 925 1. Dans le TP, à partir de la deuxième étape, nous avons trois répertoires de sources `kernel`, `ulib` et `uapp`. Chaque répertoire contient une fichier `Makefile` différent destiné à produire une `cible` différente grâce à une règle nommée `compil`, c.-à-d. si vous tapez `make compil` dans un de ces répertoires, cela compile les sources locales.\\Il y a aussi un Makefile dans le répertoire racine ` 4_libc`. Dans ce dernier Makefile, une des règles est destinée à la compilation de l'ensemble des sources dans les trois sous-répertoires. Cette règle appelle récursivement la commande `make` en donnant en argument le nom du sous-répertoire où descendre :\\`make -C <répertoire> [cible]` est équivalent à `cd <répertoire>; make [cible] ; cd ..`\\Ecrivez la règle `compil` du fichier `4_libc/Makefile`.925 1. Dans le TP, à partir de la deuxième étape, nous avons trois répertoires de sources `kernel`, `ulib` et `uapp`. Chaque répertoire contient une fichier `Makefile` différent destiné à produire une `cible` différente grâce à une règle nommée `compil`, c.-à-d. si vous tapez `make compil` dans un de ces répertoires, cela compile les sources locales.\\Il y a aussi un Makefile dans le répertoire racine `04_libc`. Dans ce dernier Makefile, une des règles est destinée à la compilation de l'ensemble des sources dans les trois sous-répertoires. Cette règle appelle récursivement la commande `make` en donnant en argument le nom du sous-répertoire où descendre :\\`make -C <répertoire> [cible]` est équivalent à `cd <répertoire>; make [cible] ; cd ..`\\Ecrivez la règle `compil` du fichier `04_libc/Makefile`. 926 926 {{{#!xml 927 4_libc/927 04_libc/ 928 928 ├── Makefile : Makefile racine qui invoque les Makefiles des sous-répertoires et qui exécute 929 929 ├── common ────────── répertoire des fichiers commun kernel / user … … 1186 1186 1187 1187 {{{#!xml 1188 4_klibc/1188 03_klibc/ 1189 1189 ├── kinit.c : fichier contenant la fonction de démarrage du noyau 1190 1190 ├── harch.h : API du code dépendant de l'architecture … … 1349 1349 │ ├── harch.c : code dépendant de l'architecture du SoC 1350 1350 │ ├── hcpu.h : prototype de la fonction clock() 1351 │ ├── hcpua.S 1351 │ ├── hcpua.S : code dépendant du cpu matériel en assembleur 1352 1352 │ ├── klibc.h : API de la klibc 1353 1353 │ ├── klibc.c : fonctions standards utilisées par les modules du noyau