Продвинутый векторный транслятор — язык программирования и кросс-компилятор под 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 (загрузок: 5). В этом архиве вы найдёте сам компилятор, подсветку синтаксиса для языков ПВТ и fasm, которую можно импортировать в программу Notepad++ и примеры программ всех трёх разрядностей
Исходный код ПВТ версии 0.3.2 (загрузок: 5). Для компиляции используйте Lazarus IDE и библиотеки, исходный код которых можно загрузить по нижеследующей ссылке
Общий исходный код (загрузок: 5). Необходим для компиляции
Что можно написать на ПВТ?
Всё то же самое, что и на 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-битной программе каждый байт на счету.