Продвинутый векторный транслятор — язык программирования и кросс-компилятор под x86-платформы
![]() |
|
| Тип | Языки программирования, генераторы кода |
| Написан на | Lazarus IDE |
| Операционные системы | Windows XP/7/8/10, WINE |
| Системные требования | SSE3 |
| Языки оболочки | Русский |
| Первый выпуск | 23 сентября 2017 |
| Последняя версия | 0.3.2 |
| Дата последней версии | 28 марта 2018 |
| Читаемые форматы данных | исходный код ПВТ .avt, проект ПВТ .avtproj |
| Создаваемые форматы данных | исходный код fasm .asm |
| Лицензия | GNU GPL 3, GNU LGPL 3 |
Продвинутый векторный транслятор (сокращённо: ПВТ) — язык программирования высокого уровня и свободный кросс-компилятор, который создаёт исходный код на языке flat assembler. Генерирует код любой разрядности по выбору программиста: 16, 32 и 64 бита. Если выбрать генерацию 64-битного кода, то будут доступны векторные типы данных и операции над ними, а также весь набор типов данных и инструкций ПВТ. Часть кода может быть написана непосредственно на ассемблере, в том числе и с использованием макросного движка flat assembler.
Вам так же понадобится flat assembler для компиляции сгенерированного исходного кода. Документацию на язык программирования и компилятор можно посмотреть здесь.
Важно: данный проект заброшен. Он больше не получит обновлений. Дальнейшее развитие проекта — его объектно-ориентированная версия.
Загрузки
Загрузить Продвинутый векторный транслятор версии 0.3.2 (загрузок: 15). В этом архиве вы найдёте сам компилятор, подсветку синтаксиса для языков ПВТ и fasm, которую можно импортировать в программу Notepad++ и примеры программ всех трёх разрядностей
Исходный код ПВТ версии 0.3.2 (загрузок: 17). Для компиляции используйте Lazarus IDE и библиотеки, исходный код которых можно загрузить по нижеследующей ссылке
Общий исходный код (загрузок: 19). Необходим для компиляции
Что можно написать на ПВТ?
Всё то же самое, что и на flat assembler: программы под DOS, GNU/Linux, KolibriOS, MacOS, Windows и другие x86-платформы, ядра операционных систем, загрузчики (bootloaders). Однако загрузочные секторы всё-таки лучше писать на flat assembler, поскольку их размер не должен превышать 512 байт.
ЧаВО
Зачем нужны типы данных yvector, zvector, fvector, ultra32 и ultra64, если ними невозможно воспользоваться?
Эти типы данных предполагалось использовать в процессорах с поддержкой AVX-512. В объектно-ориентированной версии языка программирования названия векторных типов имеют вид TypeN, где Type — это тип элементов вектора (byte, short, int, long, float или double), а N — это количество элементов вектора (2, 4 или 8). Более того, исчезли операции вроде ++..++, **..** и другие с двумя точками внутри, поскольку количество элементов вектора там всегда известно.
Почему при написании 16-ти и 32-битных программ нельзя пользоваться некоторыми типами данных?
Из-за того, что в процессорах x86 нет полного набора инструкций и регистров для их полной поддержки. Например, нельзя использовать тип long из-за того, что все регистры общего назначения 32-битные, а набор инструкций SSE3 не располагает инструкцией деления целых чисел. Существует длинная арифметика, но она не была реализована в ПВТ.
Почему при написании 16-битных программ нельзя пользоваться типом int, ведь все регистры общего назначения 32-битные?
Из-за ограничений на размер кода программы: он не должен превышать примерно 47 килобайт. В одном 64-килобайтном сегменте должны располагаться код программы, куча и прочие данные, если они есть. 32-битные инструкции длиннее на 1 байт, чем 16-битные, что приведёт к увеличению размера кода, а в 16-битной программе каждый байт на счету.
