Компілятором зі змінними цілями () — такий компілятор, який був розроблений таким чином, щоб його було відносно просто модифікувати для генерації коду для різноманітних архітектур наборів команд процесору. Історія цього виду компілятору розпочинається у 1950-х роках, коли мова UNCOL була запропонована універсальною проміжковою мовою. Прикладом даного виду компілятору також є компілятор Pascal-P, який у минулому застосовувався доволі широко.

Вартість створення компілятору зі змінними цілями у порівнянні з іншими значно вища через те, що неможливо використовувати специфічні деталі процесору на всіх етапах компіляції. Його перевага полягає в тому, що загальна вартість декількох процесорів значно нижча, ніж сукупна вартість багатьох нецільових компіляторів.

Деякі компілятори даного виду, наприклад GCC, стали настільки широко розповсюджуватися та розвиватися, що тепер вони включають в себе підтримку багатьох оптимізацій і специфічних для машини деталей, і в результаті якість коду часто перевершує якість компіляторів іншого виду на багатьох процесорах.

Компілятор зі змінними цілями є різновидом крос-компілятору. Часто (але не завжди) він є пересувним, тобто сам компілятор може працювати на декількох різних процесорах.

Приклади:

GCC ACK lcc VBCC Портативний C компілятор SDCC LLVM Small-C компілятор MPG (машинно незалежний ефективний мікропрограмний генератор)Rainer Leupers, Peter Marwedel. «Retargetable Compiler Technology for Embedded Systems» . 2001. () p. 63.

Примітки

Посилання LANCE compiler website The LLVM compiler infrastructure website The (open-source) ACK sourceforge page Nils Weller's C compiler page