Бесплатные материалы

Понимание ассемблера Go

ИСТОЧНИК:
В этом докладе за 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-программ: ты узнаешь, когда стоит жертвовать портативностью ради скорости и как писать по-настоящему эффективный инфраструктурный код

Дополнительные материалы к видео

Презентация
https://squidex.jugru.team/api/assets/srm/bf40fd1e-aab5-4383-8a0a-f7abdb82939e/gofunc-final.pdf
Продвинутый Go