Обновить ридми после русификации имен скриптов

This commit is contained in:
mzhoot 2026-06-20 09:16:31 +03:00
parent b0fa390abb
commit ccfe0f7a05

109
README.md
View file

@ -3,6 +3,8 @@
**КВС** — это экспериментальный ассемблер для архитектуры x86-64, полностью использующий **русскую лексику** для мнемоник инструкций, имён регистров и директив. Проект носит образовательный характер и демонстрирует принципы работы ассемблера, построения ELF-файлов и трансляции высокоуровневых концепций в машинный код.
---
## 📋 Оглавление
- [Особенности](#-особенности)
@ -20,6 +22,8 @@
- [План развития](#-план-развития)
- [Лицензия](#-лицензия)
---
## ✨ Особенности
- **Полностью русский синтаксис** — все инструкции, регистры и директивы на кириллице
@ -36,6 +40,8 @@
- **Автоматическая система регрессионного тестирования** — 9+ тестов, проверяющих все аспекты работы ассемблера
- **Минимализм зависимостей** — только стандартная библиотека Python
---
## 🏗 Архитектура
Процесс трансляции исходного кода `.квс` в исполняемый файл `.elf` проходит через **6 этапов**:
@ -43,26 +49,26 @@
```
Исходный файл (.квс)
▼ (kvs_lexer.py) ← лексический анализ
▼ (квсексер.py) ← лексический анализ
Файл токенов (.токены)
▼ (kvs_parser.py) ← синтаксический анализ
▼ (квс_парсер.py) ← синтаксический анализ
AST-представление (.аст)
▼ (kvs_pass1.py) ← ПРОХОД 1: генерация CSV с заглушками (0xCC)
▼ (квс_проход1.py) ← ПРОХОД 1: генерация CSV с заглушками (0xCC)
CSV-файл (.csv) ← содержит все байты программы, метки, виртуальные адреса
▼ (kvs_pass2.py) ← ПРОХОД 2: разрешение меток
▼ (квс_проход2.py) ← ПРОХОД 2: разрешение меток
▼ (kvs_pass3.py) ← ПРОХОД 3: подстановка констант (.константа)
▼ (квс_проход3.py) ← ПРОХОД 3: подстановка констант (.константа)
▼ (kvs_pass4.py) ← ПРОХОД 4: перекодирование инструкций
▼ (квс_проход4.py) ← ПРОХОД 4: перекодирование инструкций
▼ (kvs_pass5.py) ← ПРОХОД 5: генерация корректных таблиц секций для совместимости с toolchain
▼ (квс_проход5.py) ← ПРОХОД 5: генерация корректных таблиц секций для совместимости с toolchain
▼ (kvs_pass6.py) ← ПРОХОД 6: постобработка CSV для визуального анализа
▼ (квс_проход6.py) ← ПРОХОД 6: постобработка CSV для визуального анализа
▼ (kvs_builder.py) ← сборка ELF из CSV
▼ (квс_финсбор.py) ← сборка ELF из CSV
ELF-файл (.elf)
@ -84,20 +90,20 @@ ELF-файл (.elf)
| Файл | Назначение |
|------|-------------|
| `kvs_build.py` | Главный сборочный скрипт |
| `kvs_lexer.py` | Лексический анализ |
| `kvs_parser.py` | Синтаксический анализ, построение AST |
| `квс_сборка.py` | Главный сборочный скрипт |
| `квсексер.py` | Лексический анализ |
| `квс_парсер.py` | Синтаксический анализ, построение AST |
| `kvs_data.py` | Общие данные: регистры, таблица инструкций |
| `kvs_encoder.py` | Фасад кодировщика |
| `kvs_encoder_fixsize.py` | Кодировщик инструкций фиксированного размера |
| `kvs_encoder_mutsize.py` | Кодировщик инструкций переменного размера |
| `kvs_pass1.py` | Генерация CSV с заглушками |
| `kvs_pass2.py` | Разрешение меток |
| `kvs_pass3.py` | Подстановка констант |
| `kvs_pass4.py` | Перекодирование инструкций |
| `kvs_pass5.py` | Генерация таблиц секций |
| `kvs_pass6.py` | Сортировка CSV |
| `kvs_builder.py` | Сборка ELF из CSV |
| `квс_проход1.py` | Генерация CSV с заглушками |
| `квс_проход2.py` | Разрешение меток |
| `квс_проход3.py` | Подстановка констант |
| `квс_проход4.py` | Перекодирование инструкций |
| `квс_проход5.py` | Генерация таблиц секций |
| `квс_проход6.py` | Сортировка CSV |
| `квс_финсбор.py` | Сборка ELF из CSV |
### Структура CSV-файла
@ -114,6 +120,8 @@ ELF-файл (.elf)
| `рассчитанный_уводящий_адрес` | Реальный адрес метки после разрешения |
| `рассчитанный_байт` | Итоговый байт после перекодирования |
---
## 🔧 Установка
```bash
@ -122,12 +130,14 @@ git clone https://github.com/artradeskz/kvs.git
cd kvs
# Установка прав на выполнение
chmod +x kvs_build.py
chmod +x квс_сборка.py
# Проверка работы
python3 kvs_build.py --help
python3 квс_сборка.py --help
```
---
## 🚀 Быстрый старт
### 1. Создайте файл `hello.квс`:
@ -156,7 +166,7 @@ msg: .строка "Привет мир!\n"
### 2. Скомпилируйте:
```bash
python3 kvs_build.py hello.квс
python3 квс_сборка.py hello.квс
```
### 3. Запустите:
@ -171,6 +181,8 @@ python3 kvs_build.py hello.квс
Привет мир!
```
---
## 🧪 Система тестирования
Проект включает автоматическую систему регрессионного тестирования, которая проверяет все аспекты работы ассемблера.
@ -193,7 +205,7 @@ python3 kvs_build.py hello.квс
├── тест_адресации2/ # абсолютная адресация по метке
├── тест_адресации3/ # косвенная адресация через RBX
├── тест_бнд/ # проверка BSS секции (.bss)
└── ...
└── ...
```
### Запуск тестов
@ -226,6 +238,8 @@ python3 тесты/kvs_full_test.py
| ест_адресации3` | Косвенную адресацию через RBX |
| ест_бнд` | BSS секцию: NOBITS, размер, p_memsz |
---
## 📝 Синтаксис
### Структура программы
@ -271,13 +285,15 @@ _start: ; метка _start
; Косвенная адресация через регистр
переместить_имм рбикс, переменная
загрузить раикс, [рбикс]
загрузить раикс,[рбикс]
; Работа с BND-секцией
.бнд
счётчик: .байт 0
```
---
## 📖 Система команд
### Загрузка констант
@ -352,6 +368,8 @@ _start: ; метка _start
вызов_системы
```
---
## 💾 Регистры процессора
КВС поддерживает все основные 64-битные регистры x86-64:
@ -367,6 +385,8 @@ _start: ; метка _start
| `рсиай` | `есиай` | `эс` | `сил` |
| `рдиай` | `едиай` | `ди` | `дил` |
---
## 🔧 Директивы ассемблера
| Директива | Назначение | Пример |
@ -384,6 +404,8 @@ _start: ; метка _start
| `.рездс` | Резервирование двойных слов в BND | `.рездс 25` |
| `.резкс` | Резервирование квадрослов в BND | `.резкс 10` |
---
## 📝 Примеры программ
### Работа с памятью (переменные)
@ -505,44 +527,46 @@ _start:
.глобал _start
_start:
сравнить_с рдиай, 2
сравнить_с рдиай,2
переход_если_не_равно no_arg
загрузить р8, [рсиай + 8]
загрузить р8,[рсиай + 8]
переместить рдиай, р8
исключающее_или рдикс, рдикс
strlen:
загрузить ал, [р8]
сравнить_с ал, 0
загрузить ал,[р8]
сравнить_с ал,0
переход_если_равно strlen_done
увеличить р8
увеличить рдикс
переход strlen
strlen_done:
переместить_имм раикс, 1
переместить_имм раикс,1
переместить рсиай, рдиай
переместить_имм рдиай, 1
переместить_имм рдиай,1
вызов_системы
исключающее_или рдиай, рдиай
переместить_имм раикс, 60
переместить_имм раикс,60
вызов_системы
no_arg:
переместить_имм раикс, 1
переместить_имм рдиай, 1
переместить_имм раикс,1
переместить_имм рдиай,1
переместить_имм рсиай, msg_no_arg
переместить_имм рдикс, 26
переместить_имм рдикс,26
вызов_системы
переместить_имм рдиай, 1
переместить_имм раикс, 60
переместить_имм рдиай,1
переместить_имм раикс,60
вызов_системы
.данные
msg_no_arg: .строка "Ошибка не передан аргумент\n"
```
---
## 🐛 Отладка и проверка
### Просмотр сгенерированного кода
@ -583,6 +607,8 @@ gdb ./программа.elf
(gdb) stepi
```
---
## ⚠️ Ограничения
### Поддерживается
@ -613,10 +639,14 @@ gdb ./программа.elf
- Многомодульная компиляция
- Макросы
---
## Инструменты разработчика
**Подсветка синтаксиса для VS Code** — доступно расширение [Universal Assembly Syntax Highlighting](https://github.com/artradeskz/Universal-Assembly-Syntax-Highlighting) с поддержкой языка КВС (русские инструкции, регистры, секции и директивы)
---
## 📈 План развития
### Реализовано (v2.0)
@ -630,6 +660,7 @@ gdb ./программа.elf
- Секция `.бнд` для неинициализированных данных
- Автоматическая система регрессионного тестирования (9+ тестов)
- Полная совместимость со стандартным toolchain Linux
- Русификация основных скриптов сборки
### В планах (v3.0)
@ -637,12 +668,16 @@ gdb ./программа.elf
- Сложная адресация с индексом `[reg + reg*scale]`
- Полная SIB-адресация `[reg + reg*scale + disp]`
- Стандартная библиотека (`libkvs.квс`): malloc, free, strlen, strcmp, print
- Полная русификация всех модулей (включая кодировщики)
---
## 📄 Лицензия
Только для образовательных целей. Используйте на свой страх и риск.
---
*КВС Ассемблер | Экспериментальный проект | 2026*
*Только для образовательных целей. Используйте на свой страх и риск.*
```
```