Compiler911 Publisher's description
from Soft-Universe Ltd
Optimizing, easy and clever, multi-target object pascal and assembler compiler, suitable absolutely for all kinds of programming tasks on x86 platform (even writing an own OS).
Optimizing, easy and clever, multi-target object pascal and assembler compiler, suitable absolutely for all kinds of programming tasks on x86 platform (even writing an own OS). Contains the set of source code analysis and refactoring tools. Has an easy and friendly user interface. Not like other compilers. Free edition for Windows 2000/XP/Vista is available for immediate download.
Why do we need the new compiler?
Global financial crisis, the world is trying to make away with wastefulness and to find optimal resource usage schemes (in the broad sense). So may be the idea of building an optimizing compiler, which would bring the program optimization to the new level, is the demanded one today. There were a lot of tries to build an optimizing compiler, and almost all modern compilers perform some optimizations. But are we satisfied with this optimization results? Could they be better? Soft-Universe company team thinks they could be much better. Computer wins the chess the Human. But could any Complier win a Human-Programmer the game of optimizing some program? Not, of course. No high level compiler can challenge a qualified assembler programmer in output program performance.
How does a programmer write his applications? Firstly, he writes the source code in the way that the correct execution of the program can be reached and tested. And after that the optimization processes begins: algorithmic modifications, computer resources usage improvements, data structures optimizations etc. The programmer usually stops this process at some reasonable point, usually far away from assembler level optimizations. But anyway, the time spent by programmer for optimizations is still very much. Modern compilers on the modern computers couldвЂ¦ yes, they could do it themselves, making a program designing process faster, easier and more reliable.
What is an ideal compiler?
Since we want to make Compiler911 one of the best, what it should be like?
* Compiler911 must be the perfect solution for building all kind of applications: small ones, large GUI applications, or even operating systems. That means: no predefined routines and system modules, everything should be (re)definable by programmer.
* Optimization: we would like compiler to be clever and intelligent and to generate optimized output files, freeing the programmer from optimization process. Actually this is the main point.
What is Compiler911 today?
Compiler911 is the Object Pascal/Assembler compiler with GUI interface suitable for solving wide range of programming tasks: from compiling own OS (simplest demo OS included) to writing win32 applications. 3 compile destination targets available:
* windows 32 bit PE executables,
* binary 32 or 16 bit mode files (boot sector for example),
* virtual compiling with no output (high level algorithms analyze purposes).
Compiler911 can be used as assembler compiler, with few notes. Firstly, all procedures should be declared in the high level language (pascal) and the procedureвЂ™s bodies can be written on assembler. Secondly, no DD (DB, DW) instruction is available вЂ“ all data structures must be described using high level language too. This is required for optimization purposes. Compiler911 analyses the logic of calculations and builds itвЂ™s own calculation algorithm. To make sure this logic is "understood" correctly, the procedureвЂ™s headers required (parameters, return values, calling convention. This gives the optimizer information about which register and memory addresses are input values and which are output values. All invaluable assignments and calculations are eliminated by optimizer. So there is no opportunity at this moment to return procedures value for example in some EFLAGS bit, because no standard calling convention (stdcall, register...) allows it. We are thinking about implementing user-defined calling conventions or about making compiler to choose optimal Input/Output by itself.
With the few exceptions, Compiler911 doesnвЂ™t put any code into compiled project by itself, as other compilers do. Different project require different compiler abilities, such as strings, classes or dynamic memory allocation functions. Our idea: if the programmer needs these features, he must define them in the projectвЂ™s System Unit by implementing list of special objects. For example if a project uses classes, then the projectвЂ™s System Unit should contain вЂњTObjectвЂќ named class (which is considered to be ancestor for all other classes) and вЂњ_ClassCreateвЂќ and вЂњ_ClassDestroyвЂќ procedures. If dynamic memory allocation routines New and Dispose are used, then the System Unit should contain вЂњ_GetMemвЂќ and вЂњ_FreeMemвЂќ procedures, and so on... This gives more flexibility and freedom to programmer.
You can read more about Compiler911, System Unit and Optimizations in the "Library".
Compiler911 is still a bit far away from being the best compiler in the world, but we move forward and try to find original solutions to be applied in our product.
Low level optimizer features:
* Assembler instructions compile-time emulating (when possible),
* Constants compile-time calculating,
* Register and local memory values tracking,
* Register renaming and reassigning mechanism(EAX-EBX),
* Memory to registers optimization,
* Dead blocks and invaluable operations elimination.
Plans for near future (optimizer):
* Constants to registers,
* Instruction reordering,
* Procedure inlining,
* All registers participating in calculations(+ EBP, ESI, EDI).
Just unpack zip package into an empty directory. When downloaded a newer edition, delete all old configuration files (as long as current version is classified as beta-testing version, no upgrade with setup settings migration is available).
* Windows XP or later
* 2 Gb RAM (1 Gb Minimum)
Compiler911 intensively uses RAM, the larger the projects are вЂ“ the larger memory amount is required. (100Mb-1000Mb of RAM / 1Mb of output code approximately).
System Requirements:No special requirements.
Program Release Status: Major Update
Program Install Support: Install and Uninstall