Fermer2
PpHdLe 15/09/2003 à 12:47
C'est pour l'avenir de PedroM. Les archives en flat (Juste une collection d'entree) ou sector(comme sur AMS).

L'avantage du flat est:
+ Pas de pertes de place du aux bouts qui rentrent pas tout a fait.
+ Taille entree > 64K.
Inconvenient:
+ Consommation peut etre accrue de la Flash (Pas sur a verifier par des simu).

Une entree possedera donc comme struct:
FLAGS.w: UNUSED / IN_USE / DELETED + le type d'entree (VOID, ARCHIVE_SIZE,PEDROM_APPS, SWAP_MEMORY, ...)
SIZE.l: Taille

Ex de GC:
 
 ArcPtr = ArchiveMemoryBegin;
  Pass1. Recherche d'un secteur avec une entree marquee comme a effacer.
  Pass2:  tant que (ok) { ok = NextSector(); EraseSector(); ReCopySector(); }
  
NextSector:
  remaining = 65536, HeapPtr = HeapPtrInit;
  if (entry_size > 0)
    CopyEntry();
  while (remaining > 0)
    switch (ArcPtr->Flags)
       case IN_USE: entry_size = ArcPtr->size; CopyEntry(); break;
       case DELETED: ArcPtr += ArcPtr->size;
       case UNUSED: ok = 0;
       default: Arg!!!!!!!!!!!!!!!
   }

CopyEntry:
  cp_size = min(remaining, entry_size)   ;
  entry_size -= cp_size;
  remaining -= cp_size;
  HeapPtr = Copy(ArcPtr, HeapPtr, cp_size);
  ArcPtr += cp_size;

 


Evidement c'est simplifie.