An open API service indexing awesome lists of open source software.

https://github.com/umbrellaleaf5/asm

My repository with home and seminars exercises on introduction to computer architecture and assembly language at MIPT DAFE/RSE
https://github.com/umbrellaleaf5/asm

assembly cmake dafe education mipt

Last synced: about 1 year ago
JSON representation

My repository with home and seminars exercises on introduction to computer architecture and assembly language at MIPT DAFE/RSE

Awesome Lists containing this project

README

          

# Введение в архитектуру компьютера и язык Ассемблера

## Краткое описание

Это репозиторий с моими (и не только моими) домашними работами и семинарскими упражнениями по этому курсу, который в 2024 году читался во втором семестре на ФАЛТ (ПИШ РПИ) МФТИ.

**Изучаемая архитектура: [x86-64 (также AMD64/Intel64/EM64T)](https://ru.wikipedia.org/wiki/X86-64)**

## О CMake

С помощью CMake здесь настроена возможность компиляции домашних работ и некоторых семинарских упражнений.

Однако для компиляции необходимо установить некоторые библиотеки, а именно `FLTK` и `Boost` (`unit_test_framework`).

[Используя MSYS2](https://vkvideo.ru/video490206404_456239491), это можно сделать следующим образом:
```shell
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-cmake
pacman -S mingw-w64-x86_64-boost
pacman -S mingw-w64-x86_64-fltk
```

## Материалы:

### [Домашние работы](/library/hometasks.pdf):

#### 1 задание:
* [Логические элементы (схемы)](./logic_elements/): Программа на `C++`, которая будет моделировать работу и рисовать на экране одну из следующих логических схем, а также обеспечит ввод входных и вывод выходных сигналов (консоль, файл или GUI) и перерисовку схемы при изменении входных сигналов:
* [**4-х разрядный декодер**](./logic_elements/schemes/beautiful_decoder) (в данном случае был реализован n-разрядный декодер, причем с "красивым" оформлением, использующем графическую библиотеку FLTK, на основе кода преподавателя А. В. Мишковича);
* 4-х разрядная схема сдвига;
* 4-х разрядный компаратор;
* 4-х разрядный полный сумматор;
* 4-х разрядный регистр на основе D-триггеров.

* [Реализация некоторых алгоритмов на машине Тьюринга](./formal_algo/turing/): Машины Тьюринга, которые реализуют:
* [сложение двух неотрицательных чисел, данных в двоичной системе счисления](./formal_algo/turing/дз/сложение_двоичных.tur).
* [умножение двух неотрицательных чисел, записанных на ленте в виде последовательности единиц](./formal_algo/turing/дз/умножение_единичных.tur), а именно: 0 → 0,1 → 01,2 → 011,3 → 0111,4 → 01111, ... Назовём эту запись единичной записью числа (числа записаны на ленте подряд).

* [Реализация некоторых алгоритмов на машине Маркова](./formal_algo/markov/): Алгоритмы Маркова, которые реализуют:
* сложение двух неотрицательных чисел, данных в двоичной системе счисления.
* [удвоение числа заданного в виде единичной записи](./formal_algo/markov/дз/удвоение_единичной_записи.nma).
* [удвоение числа заданного в двоичной системе счисления](./formal_algo/markov/дз/удвоение_двоичной_записи.nma).

* [Реализация некоторых алгоритмов на конечном автомате](https://github.com/UmbrellaLeaf5/state_machines_executor/tree/main/examples): Конечные автоматы, которые получают на вход двоичную запись натурального числа, начиная с младшего разряда, и выводят двоичную запись числа (все реализации сделаны на основе классов в Python, в будущем планируется создание полноценного графического редактора для удобства выполнения этого задания):
* [x + 3](https://github.com/UmbrellaLeaf5/state_machines_executor/blob/main/examples/number_plus_three.py);
* [3 * x](https://github.com/UmbrellaLeaf5/state_machines_executor/blob/main/examples/number_mul_three.py);
* [3x + 2](https://github.com/UmbrellaLeaf5/state_machines_executor/blob/main/examples/number_mul_three_plus_two.py);
* x * (x mod 3).

#### [2 задание](https://github.com/UmbrellaLeaf5/assembly_text_task):
* [Свойство текста](https://github.com/UmbrellaLeaf5/assembly_text_task/blob/main/assembly_funcs/remove_all_first_repeats.s): Текст начинается заглавной латинской буквой и оканчивается заглавной латинской буквой.

* [Правило 1](https://github.com/UmbrellaLeaf5/assembly_text_task/blob/main/assembly_funcs/change_all_latin_to_star.s): Заменить каждую латинскую букву символом `*`.

* [Правило 2](https://github.com/UmbrellaLeaf5/assembly_text_task/blob/main/assembly_funcs/remove_all_first_repeats.s): Удалить из текста все повторные вхождения его первого символа.

### Прочее:

* [Семинарские упражнения разного рода](./assembly_learning/sem_exercises/) (часто описываются названием папки).

* [Экзаменационное задание](./assembly_learning/exam_exersise/): (пример того, что могут спросить на экзамене): Проверить, является ли число `unsigned int N` степенью двойки.

## [Материалы за авторством Никиты Андреевича Бучилкина](./assembly_learning/hopity/):

Качественное выполнение заданий в этом курсе (в том числе домашних) от [человека](https://github.com/H0p1ty), который сдал зачет **лектору на ОТЛ**.

* [Домашние работы](./assembly_learning/hopity/asm%20tasks/)
* [Конспекты книги О'Халларона](./assembly_learning/hopity/asm_book_hallaron/)
* [Семинарские упражнения](./assembly_learning/hopity/code/)