Продвинутый векторный транслятор — язык программирования и кросс-компилятор под 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 (загрузок: 1). В этом архиве вы найдёте сам компилятор, подсветку синтаксиса для языков ПВТ и fasm, которую можно импортировать в программу Notepad++ и примеры программ всех трёх разрядностей

Исходный код ПВТ версии 0.3.2 (загрузок: 1). Для компиляции используйте Lazarus IDE и библиотеки, исходный код которых можно загрузить по нижеследующей ссылке

Общий исходный код (загрузок: 1). Необходим для компиляции

Все версии

Контрольные суммы

Документация

Исходный код

Что можно написать на ПВТ?

Всё то же самое, что и на 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-битной программе каждый байт на счету.