Compiler un code C.
Résolu/Fermé
_benjamindu11_
-
10 sept. 2012 à 20:59
0x40 Messages postés 65 Date d'inscription vendredi 7 septembre 2012 Statut Membre Dernière intervention 14 septembre 2012 - 11 sept. 2012 à 23:41
0x40 Messages postés 65 Date d'inscription vendredi 7 septembre 2012 Statut Membre Dernière intervention 14 septembre 2012 - 11 sept. 2012 à 23:41
A voir également:
- Compiler un code C.
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Telecharger code blocks avec compilateur - Télécharger - Langages
4 réponses
0x40
Messages postés
65
Date d'inscription
vendredi 7 septembre 2012
Statut
Membre
Dernière intervention
14 septembre 2012
41
11 sept. 2012 à 13:48
11 sept. 2012 à 13:48
Je trouve vote sujet très interressant lors de la compilation des fichiers .o (objets) sont générés ! Ce sont eux qui contiennent la traduction du code en langage machine.
En théorie si je ne dis pas de bétises il vous suffit de récupérer leur contenu !
En théorie si je ne dis pas de bétises il vous suffit de récupérer leur contenu !
Non, j'ai essayé ceci et... La machine virtuelle a planté. Le curseur bougeait dans tous les sens.
J'ai donc fait autrement :
- J'ai installé VirtualBox (en plus de Virtual PC !) pour la rapidité.
- J'ai installé Ubuntu 12.04 sur une machine virtuelle VBox.
- J'ai effectué les mises à jour.
- J'ai installé nasm (sudo apt-get install nasm)
- J'ai compilé mon code :
J'ai obtenu un fichier kernel sans extension (comme voulu.)
J'ai ensuite compilé mon secteur de boot via nasm :
J'ai obtenu un fichier bootsect sans extension (comme voulu.)
J'ai ensuite utilisé WinImage pour créer une image disquette vierge, dans laquelle j'ai remplacé les octets de 0 à 0x4214 en suivant ceci :
0x0 - 0x200 : bootsect
0x200 - 0x4214 : kernel
Mon noyau pesait 0x4014 octets (hexadécimal) si mes souvenirs sont bons ;)
J'ai testé mon image disquette dans une machine virtuelle Virtual PC et là... Miracle, mon secteur de boot s'est exécuté sans aucun problème et mon noyau a chargé la GDT sans aucun problème.
Bref je suis content :D
J'ai donc fait autrement :
- J'ai installé VirtualBox (en plus de Virtual PC !) pour la rapidité.
- J'ai installé Ubuntu 12.04 sur une machine virtuelle VBox.
- J'ai effectué les mises à jour.
- J'ai installé nasm (sudo apt-get install nasm)
- J'ai compilé mon code :
gcc -c kernel.c (fichier qui contient le code du noyau) gcc -c scrnfnc.c (fichier qui contient la fonction "print" qui affiche le texte ;)) ld -o kernel --oformat binary -Ttext 1000 kernel.o scrnfnc.o
J'ai obtenu un fichier kernel sans extension (comme voulu.)
J'ai ensuite compilé mon secteur de boot via nasm :
nasm bootsect.asm -o bootsect
J'ai obtenu un fichier bootsect sans extension (comme voulu.)
J'ai ensuite utilisé WinImage pour créer une image disquette vierge, dans laquelle j'ai remplacé les octets de 0 à 0x4214 en suivant ceci :
0x0 - 0x200 : bootsect
0x200 - 0x4214 : kernel
Mon noyau pesait 0x4014 octets (hexadécimal) si mes souvenirs sont bons ;)
J'ai testé mon image disquette dans une machine virtuelle Virtual PC et là... Miracle, mon secteur de boot s'est exécuté sans aucun problème et mon noyau a chargé la GDT sans aucun problème.
Bref je suis content :D
0x40
Messages postés
65
Date d'inscription
vendredi 7 septembre 2012
Statut
Membre
Dernière intervention
14 septembre 2012
41
11 sept. 2012 à 23:41
11 sept. 2012 à 23:41
C'est toi qui à crée le sujet mais je tiens tout de même à te remercier pour tes explications claires et simples qui m'ont appris quelque chose de nouveau :)
Sinon si ton problème est résolut passe le sujet en résolut.
0x40
Sinon si ton problème est résolut passe le sujet en résolut.
0x40