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
- Host: GitHub
- URL: https://github.com/umbrellaleaf5/asm
- Owner: UmbrellaLeaf5
- License: unlicense
- Created: 2024-05-18T13:15:35.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-02-28T18:04:28.000Z (over 1 year ago)
- Last Synced: 2025-03-29T22:51:11.515Z (about 1 year ago)
- Topics: assembly, cmake, dafe, education, mipt
- Language: C++
- Homepage:
- Size: 10.1 MB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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/)