Motor de dietă - Capstone - Ultimul dezasamblator
Ultimul dezasamblator

Construire și programare cu motor „dietă”
Această documentație introduce cum să construim arhitectura Capstone pentru X86 pentru a minimiza bibliotecile în scopul încorporării.
Partea ulterioară prezintă API-urile legate de această caracteristică și recomandă zonele pe care programatorii ar trebui să le acorde atenție în codul lor.
1. Construirea unui motor de „dietă”
De obicei, folosim Capstone pentru aplicații obișnuite, unde greutatea bibliotecii nu contează cu adevărat. Într-adevăr, începând cu versiunea 2.1-RC1, întregul motor are doar 1,9 MB, inclusiv toți arhitecții, iar această dimensiune nu ridică nicio problemă majorității oamenilor.
Cu toate acestea, există cazuri în care dorim să încorporăm Capstone în medii speciale, cum ar fi driverul kernel-ului OS sau firmware-ul, în care dimensiunea acestuia ar trebui să fie cât mai mică posibil din cauza restricției de spațiu. Deși putem întotdeauna să compilăm doar arhitecți selectați pentru a face bibliotecile mai compacte, totuși dorim să le reducem mai mult.
Spre acest obiect, de la versiunea 2.1, Capstone acceptă modul dietă, în care sunt eliminate unele date non-critice, făcând astfel dimensiunea motorului cu cel puțin 40% mai mică.
În mod implicit, Capstone este construit în modul standard. Pentru a construi un motor de dietă, faceți: (demonstrația este pe sistemele * nix)
Dacă construim doar arhitecți selectați, motorul este și mai mic. Găsiți mai jos dimensiunea pentru fiecare arhitectură individuală compilată în modul dietă.
| Braţ | libcapstone.a libcapstone.dylib | 730 KB 599 KB | 603 KB 491 KB | 18% 19% |
| Arm64 | libcapstone.a libcapstone.dylib | 519 KB 398 KB | 386 KB 273 KB | 26% 32% |
| Mips | libcapstone.a libcapstone.dylib | 206 KB 164 KB | 136 KB 95 KB | 34% 43% |
| PowerPC | libcapstone.a libcapstone.dylib | 140 KB 103 KB | 69 KB 50 KB | 51% 52% |
| X86 | libcapstone.a libcapstone.dylib | 809 KB 728 KB | 486 KB 452 KB | 40% 38% |
| Combinați toate arcurile | libcapstone.a libcapstone.dylib | 2,3 MB 1,9 MB | 1,6 MB 1,3 MB | 31% 32% |