В этом докладе за 45 минут мы разберем ассемблер Go от внутреннего устройства до практической оптимизации — как понять "железо", на котором работает ваш код, и почему функции из стандартной библиотеки можно ускорить в 14 раз.
В этом уроке:
История и корни: почему ассемблер Go базируется на архитектуре Plan 9 и как он связан с кросс-компиляцией.
Терминология и примитивы: что такое мнемоники, как устроена быстрая память процессора (регистры) и зачем нужен регистр флагов для реализации циклов.
Синтаксис и виртуальные регистры: разбор работы с FP (Frame Pointer), SB (Static Base Pointer) и PC (Program Counter) для управления аргументами и глобальными данными.
Соглашения о вызовах: как Go передает данные в функции и как правильно возвращать результат согласно ABI.
SIMD-оптимизации: как использовать векторные инструкции процессора для обработки данных пачками по 16 байт и почему это радикально быстрее обычного for range.
Примеры на практике: пошаговый разбор реализации суммы слайса и поиска элементов (slices.Contains) на ассемблере.
В итоге у тебя будет четкое понимание того, что происходит на самом низком уровне исполнения Go-программ: ты узнаешь, когда стоит жертвовать портативностью ради скорости и как писать по-настоящему эффективный инфраструктурный код