Специализируюсь на программировании у самого железа. Больше десяти лет пишу и вручную дорабатываю ассемблерный код под архитектуры x86 и ARM там, где на счету каждый процессорный такт и каждое обращение к кэшу. Если какой-то участок тормозит всё приложение, я раскладываю его на отдельные машинные команды, разбираюсь, как именно процессор их выполняет, и переписываю так, чтобы конвейер был загружен, ветвления предсказывались стабильно, а работа с памятью не била по кэшу. От обычной прикладной разработки это отличается принципиально: дизассемблированный листинг для меня такой же читаемый, как исходник, и мыслю я регистрами, SIMD-дорожками, выравниванием и особенностями микроархитектуры, а не библиотеками и фреймворками.
Основная работа — это ручной тюнинг участков, критичных к скорости, аккуратное профилирование и честные измерения до и после переделки, чтобы прирост был подтверждён цифрами, а не обещаниями. Отлаживаю на уровне инструкций те дефекты, что всплывают лишь в оптимизированной сборке, и берусь за легальный реверс-инжиниринг: восстановить утраченную документацию, понять недокументированное поведение принадлежащего вам модуля или сопровождать программу, у которой бинарник давно разошёлся с исходным кодом. Ассемблер отдаю чистым и с комментариями, понятным и рядовому инженеру, а вместе с ним держу переносимую эталонную реализацию, чтобы проект оставался сопровождаемым.
Опишите проблемное место: видеокодек, вычислительное ядро, разбор данных, внутренний цикл физики, процедуру прошивки. Я проведу замеры, найду настоящее узкое место, а не буду гадать, и верну оптимизированный и протестированный вариант с понятными числовыми показателями.
— Ассемблер x86 и ARM, написанный и вылизанный вручную
— Векторизация через SIMD: SSE, AVX, NEON
— Профилирование, бенчмарки и поиск горячих участков
— Отладка оптимизированных сборок на уровне команд
— Реверс-инжиниринг и дизассемблирование для сопровождения
— Настройка кэша, выравнивания и предсказания переходов
Основная работа — это ручной тюнинг участков, критичных к скорости, аккуратное профилирование и честные измерения до и после переделки, чтобы прирост был подтверждён цифрами, а не обещаниями. Отлаживаю на уровне инструкций те дефекты, что всплывают лишь в оптимизированной сборке, и берусь за легальный реверс-инжиниринг: восстановить утраченную документацию, понять недокументированное поведение принадлежащего вам модуля или сопровождать программу, у которой бинарник давно разошёлся с исходным кодом. Ассемблер отдаю чистым и с комментариями, понятным и рядовому инженеру, а вместе с ним держу переносимую эталонную реализацию, чтобы проект оставался сопровождаемым.
Опишите проблемное место: видеокодек, вычислительное ядро, разбор данных, внутренний цикл физики, процедуру прошивки. Я проведу замеры, найду настоящее узкое место, а не буду гадать, и верну оптимизированный и протестированный вариант с понятными числовыми показателями.
— Ассемблер x86 и ARM, написанный и вылизанный вручную
— Векторизация через SIMD: SSE, AVX, NEON
— Профилирование, бенчмарки и поиск горячих участков
— Отладка оптимизированных сборок на уровне команд
— Реверс-инжиниринг и дизассемблирование для сопровождения
— Настройка кэша, выравнивания и предсказания переходов