1 repository
Techniques for controlling the bit-width and integer size of structured data fields to minimize memory footprints.
Distinct from Memory Size Calculators: Closest candidates focus on memory pool management or size calculation, not the definition of field bit-widths and integer types during code generation.
Explore 1 awesome GitHub repository matching operating systems & systems programming · Binary Field Layout Optimizations. Refine with filters or upvote what's useful.
Nanopb este o implementare C lightweight a Protocol Buffers, concepută pentru sisteme cu resurse limitate și microcontrollere. Aceasta funcționează atât ca bibliotecă de serializare încorporată pentru codificarea și decodificarea datelor structurate, cât și ca un generator de cod care transformă fișierele de definiție în fișiere sursă și header C compacte. Proiectul se distinge prin accentul pus pe alocarea statică a memoriei, utilizând dimensiuni maxime fixe pentru string-uri și array-uri pentru a evita alocarea dinamică a memoriei și fragmentarea heap-ului. Utilizează un mecanism de streaming bazat pe callback-uri pentru a procesa mesaje sau câmpuri care depășesc RAM-ul fizic disponibil, permițând gestionarea datelor de lungime variabilă fără a epuiza memoria sistemului. Biblioteca oferă capabilități largi pentru serializarea binară, inclusiv calcularea dimensiunii codificate, urmărirea prezenței submesajelor și framing la nivel de transport. Include, de asemenea, utilitare de reflexie pentru iterarea câmpurilor, validarea string-urilor UTF-8 și impunerea strictă a limitelor pentru a asigura siguranța memoriei la parsarea input-ului binar neverificat.
Controls the memory footprint of arrays and enums by specifying integer sizes and bit-widths during generation.