Skip to content

CPP-KT/asm-task

Repository files navigation

Asm-task

Задание

В этом репозитории есть пример программы на ассемблере:

  • add.asm — это программа, которая выполняет сложение двух длинных чисел.

Вам необходимо разобраться в этом примере и написать на его основе программы, выполняющие вычитание и умножение беззнаковых длинных чисел.

Обзор

Для того чтобы запустить примеры и написать своё решение, вам понадобится любой 64-битный дистрибутив Linux.

Инструкция по работе

  • Модифицируйте файлы sub.asm и mul.asm, чтобы они выполняли вычитание и умножение.
  • Если захотите внести изменения в add.asm, сделайте это отдельным коммитом сразу во всех трёх файлах, перед тем как приступать к реализации вычитания и умножения.
  • При необходимости собрать код без каких-либо файлов, закомментируйте в CMakeLists.txt строчки, связанные с ними (но не коммитьте эти изменения).

Инструкция по сборке

$ sudo apt install binutils g++ cmake nasm
$ ./build.sh

Запуск примера

$ ./build/add
10000000000000000000000000000000000000
100000000000000000000000000000000000000000000000000000000000000
100000000000000000000000010000000000000000000000000000000000000

Примечания

  1. На вход в add, sub и mul поступают беззнаковые числа максимальной длины 128 qwords.
  2. Результат add и sub — беззнаковое число максимальной длины 128 qwords (переполнение в соответствии с модульной арифметикой). Результат mul — беззнаковое число максимальной длины 256 qwords.
  3. Программу можно реализовать по-разному, но если в вашем решении можно будет соптимизировать потребление памяти на стеке (или в .data), то вы будете вынуждены делать правки.
  4. Вы не можете считывать числа, тратя на это больше памяти, чем требуется.
  5. Оставляйте комментарии в коде, особенно если делаете что-то нетривиальное — это сильно упрощает проверку.

Тесты в GitHub Actions

Если смотреть за выводом CI в реальном времени, GitHub может обрезать длинные числа. Так что если ожидаемые ответы на тесты mul выглядят подозрительно короткими, дождитесь окончания CI и обновите страницу. Или скачайте логи.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5