Дієтичний двигун - Capstone - The Ultimate Disassembler
Остаточний розбирач

Побудова та програмування за допомогою “дієтичного” двигуна
Ця документація представляє, як побудувати Capstone для архітектури X86, щоб мінімізувати бібліотеки для цілей вбудування.
Пізніше частина представляє API, пов’язані з цією функцією, і рекомендує області, на які слід звернути увагу програмістам у своєму коді.
1. Побудова “дієтичного” двигуна
Як правило, ми використовуємо Capstone для звичайних застосувань, де вага бібліотеки насправді не має значення. Дійсно, станом на версію 2.1-RC1, весь двигун займає лише 1,9 МБ, включаючи всі архітектури, і цей розмір не викликає проблем у більшості людей.
Однак бувають випадки, коли ми хочемо вбудувати Capstone у спеціальні середовища, такі як драйвер ядра ОС або прошивка, де його розмір повинен бути якомога меншим через обмеження простору. Хоча ми завжди можемо зібрати лише вибрані архітектури, щоб зробити бібліотеки більш компактними, ми все одно хочемо їх зменшити.
До цього об'єкта, починаючи з версії 2.1, Capstone підтримує режим дієти, в якому видаляються деякі некритичні дані, що робить розмір двигуна принаймні на 40% меншим.
За замовчуванням Capstone будується у стандартному режимі. Для побудови дієтичного двигуна виконайте: (демонстрація на системах * nix)
Якщо ми будуємо лише вибрані архітектури, двигун ще менше. Знайдіть нижче розмір для кожної окремої архітектури, складеної в режимі дієти.
| Рука | libcapstone.a libcapstone.dylib | 730 КБ 599 КБ | 603 КБ 491 КБ | 18% 19% |
| Arm64 | libcapstone.a libcapstone.dylib | 519 КБ 398 КБ | 386 КБ 273 КБ | 26% 32% |
| Міпи | libcapstone.a libcapstone.dylib | 206 КБ 164 КБ | 136 КБ 95 КБ | 34% 43% |
| PowerPC | libcapstone.a libcapstone.dylib | 140 КБ 103 КБ | 69 КБ 50 КБ | 51% 52% |
| X86 | libcapstone.a libcapstone.dylib | 809 КБ 728 КБ | 486 КБ 452 КБ | 40% 38% |
| Поєднайте всі арки | libcapstone.a libcapstone.dylib | 2,3 МБ 1,9 МБ | 1,6 МБ 1,3 МБ | 31% 32% |