Набору інструкцій x86 уже десь 33 роки, а славний GCC досі не вміє деякими з них користуватись як слід. А це означає, що добро (=відкриті проєкти) ще остаточно не перемогло.
Частка й залишок від ділення. Обидві речі можна отримати з однієї інструкції ділення DIV або IDIV (якщо, звісно, збігаються операнди). На практиці потрібно для перетворення цілого числа в текстову репрезентацію (з будь-якою аритметичною базою). Компілюється через одне місце. Постійно ділить по два рази.
Ще одна цікава задача — аритметика по модулю. Власне, стандартні цілі типи її й виконують, з модулем, відповідним кількості використовуваної пам’яті. Тут нам нагодяться передбачені добрим дядьом Інтелом особливості інструкцій множення й ділення, що при множенні n-бітних чисел отримуємо (2n)-бітне, а ділимо (2n)-бітне на n-бітне та отримуємо n-бітну частку і n-бітний залишок. Стандарти C++ — це пів біди, у них пишуть лише про потрібний результат, а не про технічну реалізацію, а от компілятор міг би й додуматись, коли ці особливості треба застосовувати.
Чи то наслідки багатоплатформеності, чи мені треба просто долучитися до вдосконалення ДжіСіСі?