|Type||Programming languages, code generators|
|Written in||Lazarus IDE|
|Operating systems||Windows XP/7/8, WINE|
|First release||September 23, 2017|
|Latest release||March 28, 2018|
|Readable data formats||AVT source .avt, AVT project .avtproj|
|Generated data formats||fasm source .asm|
|License||GNU GPL 3, GNU LGPL 3|
Advanced Vector Translator (abbreviated to AVT) is a high-level programming language and a free (as in «freedom») cross compiler that creates the flat assembler sources. It is generates assembler code of any code length at programmer’s choice: 16-bit, 32-bit and 64-bit. If you select the generation of 64-bit code, then vector data types and operations will be available, as well as entire set of data types and instructions of AVT. Part of code can be written directly in flat assembler, including using the macro engine of flat assembler.
You also need the flat assembler for compile generated sources.
The documentation for the programming language and the compiler can be viewed here.
Warning: since the programming language and translator are at an early stage of development, the syntax of language, the appearance of programme and the site content may change dramatically in future.
Download Advanced Vector Translator
In this archive you will find the compiler itself, syntax highlighting for AVT and fasm which can be imported into Notepad++ programme and example programmes for each of three code lengths.
Common sources (required for compilation, but not localized. License: GNU LGPL version 3)
what can i write in avt?
Everything is the same as the flat assembler: programmes for DOS, GNU/Linux, KolibriOS, MacOS, Windows and other x86 platforms, operating system kernels, bootloaders. However, it’s better to write the boot sectors in flat assembler, since their size should not exceed 512 bytes.
Q: Why do we need
ultra64 data types if they can not be used?
A: These data types were supposed to be used in CPUs with AVX-512 support. In future versions of the programming language, the names of vector types are supposed to be of the type
Type is one of the types (
N is the number of vector elements (
8). All of these types will need to be supported whether code generation is enabled for AVX-512 or disabled. Moreover, operations like
**..** and others with two dots inside will disappear, since the number of vector elements will always be known.
Q: Why can not I use some kinds of data types when writing 16-bit and 32-bit programmes?
A: Due to the fact that the x86 CPUs do not have a complete set of instructions and registers for their full support. For example, you can not use the
long type because all of the general-purpose registers are 32-bit, and the SSE3 instruction set doesn’t have an integer division instruction. The arbitrary-precision arithmetic exists, but it not implemented in AVT.
Q: Why can not I use the
int type when writing 16-bit programmes, because all general-purpose registers are 32-bit?
A: This is due to limitations on the size of programme code: it shouldn’t exceed approximately 47 kilobytes. In one 64-kilobyte segment can be placed the programme code, the heap and other data, if it exists. 32-bit instruction are longer by 1 byte than 16-bit instructions, which leads to increase code size, and in 16-bit programme each byte in account.