bios-OS/doc/API_MEMORY.md
2026-02-10 16:16:55 +01:00

1.3 KiB

API Gestionnaire de Mémoire (Heap)

Description

Ce module fournit un gestionnaire de mémoire dynamique (Heap) simple pour le mode réel x86. Il utilise un algorithme First-Fit avec fusion des blocs libres (coalescing) lors de l'allocation pour minimiser la fragmentation.

Le segment de mémoire utilisé est défini par MEM_HEAP_SEG (par défaut 0x2000, soit l'adresse physique 0x20000).

Structure des Données

Chaque bloc mémoire est précédé d'un en-tête de 6 octets (aligné sur 16 bits) :

Offset Taille Champ Description
+0 1 octet Status 0 = Libre, 1 = Alloué
+1 1 octet Padding Réservé pour l'alignement
+2 2 octets Size Taille des données utiles (en octets)
+4 2 octets Next Offset du prochain bloc (0 = Fin de liste)
+6 ... Data Données utilisateur

Utilisation

L'interaction se fait principalement via la macro MEM.

%include "./common/memory.asm"

; Initialisation (Obligatoire au démarrage)
MEM MEM_INIT

; Allocation de 100 octets
MEM MEM_ALLOC, 100
; AX contient le handle (offset) ou 0 si erreur

; Utilisation du pointeur
mov bx, ax          ; Sauvegarde du handle
MEM MEM_RESOLVE, bx
; ES:DI pointe maintenant vers les données

; Libération
MEM MEM_FREE, bx