Решаем задачи Advent of Code 2020 на GNU Assembler — часть 2
В предыдущем выпуске мы написали достаточное количество функций в нашей «стандартной библиотеке», чтобы приступить к решению первой задачи. Она довольно тривиальная, так что можно считать это просто «пробой пера», попыткой написать на GAS хоть что-то осмысленное.
Решаем задачи Advent of Code 2020 на GNU Assembler — часть 1
Эта серия — эксперимент в том, сколько можно достичь, используя только самые базовые инструменты.
У нас есть регистры, стек и инструкция syscall
— остальное придётся реализовать самим.
Уточним условия:
- Используем только GNU Assembler и его встроенный препроцессор.
- Все бинарники должны быть статическими и freestanding. Не опираемся на
libc
. - Решение не обязано быть идеально корректным — к примеру, размер буфера можно определять, исходя из реальных входных данных. Единственная цель — получить правильный ответ.
- Единственная поддерживаемая платформа — Linux x86_64.
Код будет подробно прокомментирован, но от читателя всё-таки ожидается базовое понимание синтаксиса языка ассемблера.