Table of Contents

Commit 2008-12-20

Modifs

Fac binaire portable

Depuis l'utilisation intensive de size_t dans le code, les FACs binaires ne sont plus compatibles entre machines. Pour y remédier, je liste ici les différents types et leurs tailles respectives sur nos machines:

host corto garfield calimero clifton chinook
OS win32 vista64 linux-x86 linux-64 alpha-linux
byte order little little little little little
char signed signed signed signed signed
system 32 bits 64 bits 32 bits 64 bits 64 bits Remarques
sizeof(char) 1 1 1 1 1 OK
sizeof(short) 2 2 2 2 2 OK
sizeof(int) 4 4 4 4 4 OK
sizeof(long) 4 4 :!: 4 8 8 = sizeof(void*) SAUF Vista64!
sizeof(float) 4 4 4 4 4 OK
sizeof(double) 8 8 8 8 8 OK
sizeof(size_t) 4 8 4 8 8 = sizeof(void*)
sizeof(void*) 4 8 4 8 8 fonction du système 32/64 bits
sizeof(bool) 1 1 1 1 1 OK
sizeof(__int64) 8 8 utilisable sous Windows
sizeof(long long) 8 8 8 utilisable sous Unix

Comme on peut le voir, toutes nos machines sont de type “little endian” et utilisent des “signed char” par défaut. Si on veut un jour lancer Metafor sur Mac ou sur Sun et relire les FACs sur des machines normales, il faudra faire la traduction “big-endian” ⇒ “little-endian” (je m'en chargerai, c'est pas difficile).

Bref, on voit que les FACs clifton et chinook sont identiques et peuvent être relus sous Vista x64 sans problème (parce qu'on n'utilise pas des long!). De même, les FACs calimero sont lisibles sous WinXP, mais illisibles sous Vista x64 (ça va merdouiller au premier size_t rencontré).

La plupart des types sont codés identiquement sur toutes les machines mis à part long et size_t.

Avec cette méthode, tous les FACs sont compatibles sur les machines actuelles.

L'inconvénient est que tous les anciens FACs calimero et WinXP deviennent illisibles. Bref, il faudra refaire tourner nos anciens cas-tests (…ah non, pas les miens vu que je suis sous Vista-x64 ;-))

Suppression des résidus DECCXX

Il est temps d'enterrer définitivement le vieux système OSF:

Fichiers ajoutés/supprimés

 

Romain BOMAN 2007/12/20 09:04