#1 Le 13/03/2007, à 10:29
- otheym
Explications sur le code source DOSBox
Bonjour à tous,
J'ai était pris d'une soudaine envie de voir le code-source de DOSBox.
Dans dos_execute.cpp je tombe sur la structure des fichiers EXE, ça tombe bien cela m'interesse depuis un bon moment.
Dans la structure, tous est en Bit16u, j'ai chercher sur google mais aucune info dessus.
quelqu'un s'aurais ce que sont les Bit16u ?
Aussi à la fin de la structure, ils ont mis: GCC_ATTRIBUTE, à quoi sert cela ? est-ce spécifique à GCC ? comment faire si ont compile dans se cas là avec un autre compilo ?
Je vous postes la structure en question:
struct EXE_Header {
Bit16u signature; /* EXE Signature MZ or ZM */
Bit16u extrabytes; /* Bytes on the last page */
Bit16u pages; /* Pages in file */
Bit16u relocations; /* Relocations in file */
Bit16u headersize; /* Paragraphs in header */
Bit16u minmemory; /* Minimum amount of memory */
Bit16u maxmemory; /* Maximum amount of memory */
Bit16u initSS;
Bit16u initSP;
Bit16u checksum;
Bit16u initIP;
Bit16u initCS;
Bit16u reloctable;
Bit16u overlay;
} GCC_ATTRIBUTE(packed);
Merci d'avance pour votre aide.
Je m'interesse au plus haut point au travail de DOSBox
EDIT : Je crois avoir trouvé, il s'agit d'un unisgned short.
Enfin je penses, voila ce que j'ai trouvé dans le fichier config.h:
typedef double Real64;
/* The internal types */
typedef unsigned char Bit8u;
typedef signed char Bit8s;
typedef unsigned short Bit16u;
typedef signed short Bit16s;
typedef unsigned long Bit32u;
typedef signed long Bit32s;
typedef unsigned __int64 Bit64u;
typedef signed __int64 Bit64s;
typedef unsigned int Bitu;
typedef signed int Bits;
Si c'est bien cela, quel est l'interet de créer un type Bit16u au lieu de mettre unsigned short ?
Dernière modification par otheym (Le 13/03/2007, à 10:34)
Aelita, je te promet que l'ont pourra bientôt vivre tous les deux.
Je te le jure mon amour.
Hors ligne
#2 Le 13/03/2007, à 11:32
- best_friend_fr
Re : Explications sur le code source DOSBox
Salut
typedef unsigned short Bit16u;
Ca définit un alias de type. Ca ne sert à rien, si ce n'est à ne pas oublier le mot unsigned par exemple, ou à faire plus de cohérence dans ton programme.
Par exemple, si tu as des entiers qui correspondent à des pommes, et des entiers qui correspondent à des bananes, nommer les types différemment te permettra de te rappeler de quoi il s'agit et ca t'évite de multiplier les chiffres entre eux (bien que le compilateur ne protestera sans doute pas)
sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr
Hors ligne
#3 Le 13/03/2007, à 11:36
- best_friend_fr
Re : Explications sur le code source DOSBox
Pour l'autre question, je pense que c'est similaire à ca.
http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Type-Attributes.html#Type-Attributes
sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr
Hors ligne
#4 Le 13/03/2007, à 11:43
- otheym
Re : Explications sur le code source DOSBox
Salut Best_friend_fr,
Merci pour la réponse.
Pour ton lien je le lirais plus tard car je vois qu'il est en anglais et comme mon anglais est totalement pourrave
En tous cas merci, ca va me permettre de comprendre un peu mieu le soruce code de DOSBox.
Je trouve d'ailleur que l'auteur aurait quand même pu faire un effort et commenter un peu plus lol.
Aelita, je te promet que l'ont pourra bientôt vivre tous les deux.
Je te le jure mon amour.
Hors ligne
#5 Le 13/03/2007, à 15:49
- otheym
Re : Explications sur le code source DOSBox
Me revoila pour une petite question.
J'ai voulu recompiler DOSBox car je voudrais y tenter quelques modifications(par exemple la possibiltié de changer les cycles directement a partir de l'interface DOS au lieu d'utiliser CTRL+F11 pour les augmenter et CTRL+F12 pour les baisser, avoir la possibilité de taper
cycles 3615
et cela mettra directement 3615 dans les cycles.
Donc avant de tenter toute modification, j'ai voulu faire une recompilation afin de vérifier qu'il compile sans probl.
Et il me renvoie un tas d'erreur comme celle-ci:
`__forceinline' does not name a type
La ligne 87 du fichier mem.h concerné par l'erreur:
INLINE Bit8u host_readb(HostPt off) {
return *(Bit8u *)off;
};
Quelqu'un s'aurais m'expliquer ?
EDIT : Je viens de voir dans config.h que INLINE est un define qui veut dire: __forceinline.
Mais je ne comprend toujours pas l'erreur.
EDIT2 : J'ai retiré les INLINE, plus de probl de ce coté là, je me retrouve maintenant avec 2 typedef utilisant des unsigned __int64 et signed __int64.
codeBlocks me dit que cela éxiste(ca y es dans l'achevèment du code), toutefois GCC lui il geule que ca éxiste pas.
je viens de chercher sur le net et ont me dit que c'es directement int, int32, int64, j'ai donc mis int64 et toujours la même erreur.
A croire que l'auteur fait expres de faire en sorte que l'ont ne puisse pas recompiler(ce qui est contraire à la GPL d'ailleur ).
Dernière modification par otheym (Le 13/03/2007, à 16:15)
Aelita, je te promet que l'ont pourra bientôt vivre tous les deux.
Je te le jure mon amour.
Hors ligne
#6 Le 13/03/2007, à 21:33
- otheym
Re : Explications sur le code source DOSBox
UP y a personne qui peut m'aider ?
P.S.: Les developpeurs sont con, ils me disent que pour compiler sous windows il faut utiliser MSys qui émule un environement Linux, c'est du n'importe nawak.
Aelita, je te promet que l'ont pourra bientôt vivre tous les deux.
Je te le jure mon amour.
Hors ligne