goldstein's blog

Решаем задачи Advent of Code 2020 на GNU Assembler — часть 2

В предыдущем выпуске мы написали достаточное количество функций в нашей «стандартной библиотеке», чтобы приступить к решению первой задачи. Она довольно тривиальная, так что можно считать это просто «пробой пера», попыткой написать на GAS хоть что-то осмысленное.

Решаем задачи Advent of Code 2020 на GNU Assembler — часть 1

Эта серия — эксперимент в том, сколько можно достичь, используя только самые базовые инструменты. У нас есть регистры, стек и инструкция syscall — остальное придётся реализовать самим. Уточним условия:

  1. Используем только GNU Assembler и его встроенный препроцессор.
  2. Все бинарники должны быть статическими и freestanding. Не опираемся на libc.
  3. Решение не обязано быть идеально корректным — к примеру, размер буфера можно определять, исходя из реальных входных данных. Единственная цель — получить правильный ответ.
  4. Единственная поддерживаемая платформа — Linux x86_64.

Код будет подробно прокомментирован, но от читателя всё-таки ожидается базовое понимание синтаксиса языка ассемблера.