Полный текст

Go-ассемблер: когда компилятор бессиленВ подавляющем большинстве кейсов оптимизация на Go сводится к устранению лишних аллокаций. Но в задачах с тяжёлой математикой или криптографией иногда встречаются узкие места, где высокоуровневого кода недостаточно и приходится спускаться к «железу».Главный вызов здесь — архитектура AMD64. Из-за малого количества регистров любой промах мимо кэша или лишнее обращение к памяти нивелирует весь профит. Ручная оптимизация эффективна лишь тогда, когда вычисления удаётся полностью изолировать внутри регистров.Рассмотрим создание функции умножения 256-битных чисел на низком уровне.