Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/03/2007, à 11: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 wink


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, à 11: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, à 12: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, à 12: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, à 12: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 wink

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, à 16: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 wink).

Dernière modification par otheym (Le 13/03/2007, à 17: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, à 22: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