История развития C--.

Новое в версиях компилятора.

0.239 от 14.12.2002
0.238 от 28.03.2002
0.237 от 05.11.2001
0.236 от 13.02.2001
0.235 от 13.11.2000
0.234 от 01.10.2000
0.233 от 11.09.2000
0.232 от 31.08.2000
0.231 от 16.07.2000
0.230 от 13.06.2000
0.229 от 06.04.2000
0.228 от 08.03.2000
0.227 от 09.02.2000
0.226 от 10.01.2000
0.225 от 09.12.1999
0.224 от 28.10.1999
0.223 от 05.10.1999
0.222 от 19.09.1999
0.221 от 10.09.1999
0.220 от 23.08.1999
0.219 от 06.07.1999
0.218 от 14.06.1999
0.217 от 24.05.1999
0.216 от 21.04.1999
0.215 от 14.03.1999
0.214 от 18.02.1999
0.213 от 01.02.1999
0.212 от 07.12.1998
0.211 от 15.11.1998
0.210 от 15.10.1998
0.209 от 24.09.1998
0.208 от 06.09.1998
0.207a от 6.08.1998
0.207 от 30.07.1998
0.206 от 05.06.1998
0.205 от 04.05.1998
0.204 от 13.04.1998
0.203
0.202
0.201
0.200
0.199
0.198c
0.198b
0.198a
0.198
0.197
0.196
0.195
0.194
0.193
0.192d
0.192c
0.192b
0.192a
0.192
0.191
0.190a
0.190
0.189a
0.189
0.188
0.187a

До 0.187  - Большое количество версий, с большим изменением содержимого.



     0.187a - VGAX.H-- изменён.
            - VGA.H-- дополнен.
            - VGAFILL.H-- добавлен вновь.
Return to contents.


     0.188  - Исправлены две ошибки в операторах сравнения.
            - Spiffed документы немного больше.
            - KEYCODES.H-- изменён и дополнен.
            - VIDEO.H-- изменён и дополнен.
            - WRITEHEX (word_value) добавлена в WRITE.H--.
            - STARS.C-- добавлен вновь.
            - DPMI.H-- и DPMI.C-- добавлены вновь.
            - добавлены условные выражения ZEROFLAG и NOTZEROFLAG.
Return to contents.


     0.189  - Исправлена ошибка local_var = seg_reg .
            - Версии ранее этой применять не рекомендуется!
Return to contents.


     0.189a - Документы spiffed.
            - STARS.C-- изменён.
            - DOS.H-- дополнен.
            - COMPLETE.C-- добавлен.
            - DPMI.H-- и DPMI.C-- изменены.
            - DOSWRITESTR () добавлена в DOS.H--.
Return to contents.


     0.190  - DOSWRITESTRING() удалена из внутренней библиотеки.
            - DOS.H-- дополнен.
            - DATETIME.C-- добавлен.
            - Документы spiffed.
            - Добавлены 3 цветовые схемы для всех зануд, кто
              не любит Цветной Схемы 1.
            - VIDEO.H-- дополнен.
Return to contents.


     0.190a - FIXPATH.C - ver 1.1 добавлен (автор Jean-Marc Lasgouttes)
            - Цветная Схема 3 в Work Bench немного изменена.
            - Исправлена ошибка в Num Pad в Work Bench
              (теперь версия Бета 0.120).
            - найдена, но не исправлена ошибка поиска в Work Bench
            - найдена и исправлена ошибка в TINYDRAW.C-- выбор файла.
            - VCPI.H-- и VCPI.C-- добавлены.
            - ENCRYPT.C-- добавлен.
            - BOUNCE.C-- изменён.
Return to contents.


     0.191  - Найдена и исправлена ошибка в функциях, возвращающих
              32-разрядные значения.
            - 'fixed32u' и  'fixed32s' теперь зарезервированные ключевые
              слова, они будут использоваться для определения в будущем
              32-битных переменных с фиксированной запятой (16bit.16bit).
            - Документы немного обновлены.
            - добавлены много символьные константы.
              Например: 'ab'.
Return to contents.


     0.192  - Вся имевшаяся ранее поддержка VESA из VIDEO.H-- удалена.
            - проделана некоторая работа по 32-битным переменным с
              фиксированной запятой.
            - VESA.H-- и VESA.C-- добавлены.
            - Оскорбительная строка в POW4.C-- удалена.
Return to contents.


     0.192a - WAIT() добавлена в SYSTEM.H--.
            - ДОБАВЛЕНА ПОДДЕРЖКА ЗВУКОВЫХ ПЛАТ!!!
              За весь код благодарность Michael B. Martin.
              Были добавлены следующие файлы:
              SB.H--, SBDMA.H--, SBDETECT.C--, SBGETVOL.C--,
              SBSETVOL.C--, SB_DMA.C-- и SB_DMA_.C--.
            - стал ясен весь список процедур.
Return to contents.


     0.192b - FIXPATH.C-- ver 1.1 заменён на 1.2 ver.
            - TSR.H-- добавлен.
            - KEEP() перемещена из DOS.H-- в TSR.H--.
            - PCX.H-- и PCX.C-- добавлены.
Return to contents.


     0.192c - Процедуры добавлены в VGAX.H--.
Return to contents.


     0.192d - файлы примеров, теперь рассортированы по каталогам.
            - VGAXFNT5.H-- и XFONT5.C-- добавлены.
Return to contents.


     0.193  - Устранена ошибка в обработке переменных типа long и dword
              (classic cut and paste bug).
Return to contents.


     0.194  - Начата работа над возможностью выводить файл в формате OBJ.
            - добавлена поддержка Logitech Cyberman (занятная игрушка).
Return to contents.


     0.195  - Доделан вывод файла в формате OBJ.
            - Изменён C-- Work Bench - в него включена поддержка
              форматов OBJ и EXE выходного файла компилятора
              (при том, что EXE ещё не поддерживается C--).
Return to contents.


     0.196  - Приобретён большой опыт по работе с файлами OBJ формата.
	      Благодарю всех, кто прислал мне информацию по OBJ и EXE
	      форматам файлов. Вся информация пригодилась - это огромный
	      справочник!  Теперь предстоит много работы.
Return to contents.


     0.197  - Добавлено ключевое слово far.
            - добавлен CLOCK.C--, написанный Gerardo Maiorano.
Return to contents.


     0.198  - Выходные файлы формата OBJ, проверены и отлажены с Турбо
	      Паскалем и Microsoft C. Теперь OBJ работают прекрасно, но все
	      ещё не поддерживают глобальные данные. Надеюсь, скоро будут.  -
              Документы обновлены.
Return to contents.


     0.198a - Добавлен занятный файл FIRE.C-- .
            - в Work Bench добавлен параметр поддержки файла формата OBJ
              (новая версия 0.123).
Return to contents.


     0.198b - То же самое, что и 0.198a, но введено новое имя, чтобы
              устранить ошибку upload error to wuarchive.
Return to contents.


     0.198c - Work Bench теперь помнит режим видео (новая версия 0.124).
Return to contents.


     0.199  - добавлена поддержка встроенным ассемблером следующих команд
	      80486:  BSWAP, CMPXCHG, INVD, INVLPG, WBINVD и XADD.
            - критерий поиска файлов в Work Bench изменён с *.C-- на *.?--
              (версия 0.125).
            - в Work Bench добавлен справочник по встроенному ассемблеру
              (новая версия 0.126).
Return to contents.


     0.200  - Устранены ошибки, найденные Johan в STRCAT() и strcat()
              в STRING.H--.
            - Если первое значение в стековом или регистровом выражении
              переменная типа dword или ling, 32-разрядный регистр, или
              переменная типа fixed32, выражение будет иметь тот
              же тип данных постольку поскольку никакая отмена не сделана.
              Все другие выражения будут иметь тип word.
Return to contents.


     0.201  - Добавлен $REP псевдоним для $REPZ .
Return to contents.


     0.202  - Устранена ошибка в операторе >< для long и dword.
            - Транслятор, перетранслирован БЕЗ 286 опции кода.
Return to contents.


     0.203  - символы строчных букв, добавлены к шрифту 5x5 в
              VGAFONT.H-- и VGAXFNT5.H--
            - OBJ устанавливает по умолчанию переход к main() как NONE
Return to contents.


     0.204 от 13.04.98
            - Исправлена ошибка: вместо $MOVZX получалось MOVSX
            - Добавлена поддержка ini файла
            - Некоторые внутренние процедуры имеют более короткий код
            - Исправлена ошибка в заголовке при создании EXE файла
            - EXE файл теперь работает с командной строкой (директива
              parsecommandline, процедуры PARAMCOUNT, PARAMSTR)
            - Исправлена ошибка установки заглушки CTRLC
            - Добавлены операторы GOTO и goto
            - Оптимизация кода компилятора
Return to contents.


     0.205 от 4.05.98
            - Исправлена ошибка в реализации оператора GOTO и goto
            - Добавлены операторы BREAK, break, CONTINUE, continue.
            - Добавлен цикл WHILE{}, while{}, FOR{}, for{}.
            - Произведена ревизия выходного кода и в некоторых случаях теперь
              генерируется более компактный код.
            - Исправлена ошибка: при компиляции команды
              $PUSH <непосредственное значение> - искажалась величина
              <непосредственного значения>.
            - Добавлена возможность заносить в стек двойное слово. Формат
              команды: $PUSH DWORD value или $PUSH LONG value.
            - Добавлено ключевое слово asm.
Return to contents.


     0.206 от 5.06.98
            - Реализована возможность синтаксиса типа: CX = PROC( ) ; и
              EBX += proc2( ) ;...
            - Продолжена оптимизация выходного кода.
            - Исправлена ошибка в циклах for и while: при длине цикла равной
              127 байт генерировался неправильный jmp.
            - Добавлен оператор-переключатель switch.
            - Добавлены ассемблерные команды: SHLD/SHRD, BSF/BSR,
              BT/BTC/BTR/BTS, 16 команд группы SETxxx. Команды процессора
              Pentium: CPUID, RDMSR, RDTSC, RSM, WRMSR, CMPXCHG8B.
            - Поддержка встроенным ассемблером команд MMX процессора.
            - Исправлена ошибка - при выполнении ассемблерной команды
               генерировался неверный код.
            - Убрана несуществующая ассемблерная команда CBD. Добавлена
	      команда CWDE, генерирующая тот же код.
            - Добавлена ассемблерная команда LOOPD.
Return to contents.


     0.207 от 30.07.98
            - Добавлена возможность использовать в качестве индекса к массиву
              данных другую переменную.
            - Продолжена оптимизация выходного кода.
            - Добавлены ассемблерные команды FPU.
            - Убраны, заложенные ранее, переменные fixed32s и fixed32u.
            - Введена переменная типа float. Но полностью еще не реализована.
            - Исправлена допущенная мною ошибка: при использовании сравнени
              двух переменных типа long или dword генерировался код сравнени
              слов.
Return to contents.


     0.207a от 6.08.98
            - Добавлена директива компилятору ?else.
            - Добавлена пропущенная ассемблерная инструкция FPU - fstp.
            - Добавлена ассемблерная инструкция FPU - fildq.
            - Исправлена ошибка: при операции var <<= n и var >>= n (сдвиг
              переменной с присвоением на n битов) генерировался неверный код.
            - Исправлена ошибка: при сравнении 32-битной переменной с числом -
              типа if(var32 > n) генерировался неверный код.
Return to contents.


     0.208 от 6.09.98
            - Реализована поддержка переменных типа float.
            - В оператор switch добавлена возможность делать подряд несколько
              пустых case.
            - Исправлено выравнивание 32-битных не инициализированных
              переменных.
            - Добавлена возможность использовать директивы компилятору в
              ассемблерных блоках и при объявлении локальных переменных.
            - Регистры инструкций FPU (st(0), st(1)...) можно набирать как
              маленькими буквами, так и большими.
            - Откорректирована генерация префикса SS при косвенной адресации.
              Теперь директива компилятору assumeDSSS не играет никакой роли.
Return to contents.


     0.209 от 24.09.98
            - Добавлена новая директива компилятору: ?setdinproc, по которой
              компилятор немедленно вставляет в код вызывавшиеся ранее
              динамические процедуры.
            - Появилась возможность компилировать файлы драйверов устройств
	      ДОС. Выходные файлы *.SYS.
            - Снято ограничение в 64 кб для файлов с исходными текстами.
            - Реализована поддержка логического объединения сравнений в
              условиях IF и if, в циклах do{}while, while, WHILE, for, FOR.
              Например: if(a>5)||(a<9).
            - Расширены возможности цикла for и FOR. Число операторов
	      инициализации цикла и операторов приращения теперь
	      неограниченно.
            - Оптимизирован выходной код при компиляции сочетаний: IF()BREAK,
              IF()CONTINUE, if()break, if()continue.
            - Исправлены ошибки, допущенные при реализации поддержки float и
              другие мелкие ошибки.
            - Реализована поддержка присваивания 16-битным переменным и
              регистрам адреса символьной строки типа: SI="1234";
Return to contents.


     0.210 от 15.10.98
            - Исправлена ошибка, возникавшая при использовании ассемблерных
              инструкций CMPXCHG m8,r8; XADD m8,r8; XCHG m8,r8.
            - Исправлена ошибка, возникавшая при попытке компиляции с опцией
              командной строки /SYM.
            - При преобразовании переменных типа char (byte) в 16-битные
	      регистры применена команда MOVSX (MOVZX), что вызывает
	      уменьшение длины кода.
            - Изменена генерация кода при сдвигах 8 битных регистров в
              синтаксисе типа BH<<=3.
            - Добавлена поддержка пропущенных ранее ассемблерных инструкций:
              ARPL, LAR, LSL, LGDT, LIDT, LLDT, LMSW, LTR, SGDT, SIDT, SLDT,
              SMSW, VERR, VERW.
            - Введена директива компилятору ?warning и ключи командной строки
              /+w и /wf=.
            - Добавлена поддержка 32-битной адресации к памяти.
            - Откорректирована и расширены возможности индексирования массива
	      и переменных.
            - Добавлена возможность использовать inline в процедурах обработки
              прерывания.
Return to contents.


     0.211 от 15.11.98
            - В не-EAX/AX/AL - выражениях для CPU 286 или выше теперь можно
              пользоваться командой умножения и производить сдвиги на число.
            - Введена опция оптимизации числовых выражений. Включается ключом
              командной строки /on или в c--.ini строкой on.
            - Введена возможность учитывать временное расширение разрядности
              переменной после умножения. Включается ключом командной строки
              /de или в c--.ini строкой de.
            - Исправлена работа команды return. При использовании return в
              конце процедуры не генерируются лишние RET. Скобки теперь
              необязательны.
            - Исправлена ошибка в цикле for/FOR - не компилировался синтаксис
	      с не блочным телом цикла.
            - В ассемблерной инструкции PUSH стал доступен синтаксис $PUSH #var.
            - При умножении 16 и 32-битных переменных на число применены
	      другие, более короткие и быстрые варианты кода.
            - Расширены возможности ассемблерной инструкции IMUL.
	      Поддерживается синтаксис: IMUL r16,imm16; IMUL r32,imm32; IMUL
	      r16,r/m16,imm16; IMUL r32,r/m32,imm32; IMUL r16,r/m16; IMUL r32,r/m32.
            - Исправлена ошибка генерации кода при обмене 16 или 32-битных
              локальных с глобальными переменными.
            - Для нерегистровых переменных добавлена возможность использовать
	      синтаксис умножение с присвоением (var *= var1+var2;) и деление
	      с присвоением (var /= var1+var2;).
Return to contents.


     0.212 от 7.12.98
            - Введена поддержка структур.
            - Добавлен оператор sizeof.
            - Теперь компилятор может генерировать вызовы стековых процедур и
	      в C-стиле.
            - Появилась возможность добавлять пути поиска включаемых файлов из
              командной строки ключом /ip= или строкой в ini-файле
              ip= или директивой компилятору ?includepath "path".
            - Исправлена ошибка, не позволявшая использовать в синтаксисе
              некоторых ассемблерных инструкций (int, loop ) маленькие буквы.
            - Исправлены ошибки, допущенные в предыдущей версии.
Return to contents.


     0.213 от 1.02.99
            - Добавлена возможность указывать смещения на нижележащие метки и
              процедуры.
            - Во встроенный ассемблер добавлена поддержка $ - текущее значение
              регистра IP.
            - Введена поддержка макросов: inp(), inpotr(), inportb(),
              inportd(), outp(), outport(), outportb(), outportd().
            - Вынесены из компилятора в KEYCODES.H-- процедуры CLICKOFF() и
              CLICKON(), в VIDEO.H-- процедура SETATIMASK() и SETPANREG().
            - Введен альтернативный обработчик командной строки, который
              включается/отключается директивой ?argc TRUE/FALSE или из
              командной строки /+argc /-argc. По умолчанию отключен.
            - Теперь компилятор может использовать для компиляции EMS память.
            - Введены директивы компилятору ?usestartup, ?startusevar,
              ?initallvar.
            - Для директив ?ifdef ?ifndef зарезервированы константы codesize и
              speed, которые устанавливаются в соответствии с директивами
              ?codesize/?speed или командами /size или /speed или /os или /oc.
            - Теперь директива ?ifdef не срабатывает на константу объявленную
              FALSE, а директива ?ifndef срабатывает на константу объявленную
              FALSE.
            - Исправлена ошибка преобразования 16-ричных символов строк и
              несколько ошибок генерации кода при использовании встроенного
              ассемблера.
Return to contents.


     0.214 от 21.02.99
            - Для ассемблерных инструкций PUSH и POP добавлена возможность
              задавать несколько операндов через запятую.
            - Добавлена поддержка процедуры ATEXIT. Включается директивой
              ?atexit.
            - Добавлена поддержка внешней библиотеки динамических процедур и
              почти все внутренние процедуры перенесены в неё.
            - Перенесены в библиотеку динамических процедур и многие процедуры
              из включаемых файлов. Всего на сегодняшний день библиотека
              содержит 431 процедуру.
            - Исправлены ошибки, допущенные в предыдущей версии.
Return to contents.


     0.215 от 14.03.99
            - В два раза увеличен стек компилятора.
            - Удалена поддержка ключей командной строки /MACRO /PROC /REGPROC.
            - Для проверок условий добавлены два специальных условных
	      выражения MINUSFLAG и PLUSFLAG, которые делают проверку бита
	      знака в регистре флагов.
            - Введено объявление процедур. Оно является не обязательным, но
              желательным.
            - К присваиваниям переменной добавлена возможность изменять тип на
              время вычисления их значений.
Return to contents.


     0.216 от 12.04.99
            - Появилась возможность компилировать код для расширителей
	      ROM-BIOS.  Включается ключом командной строки /ROM.
            - Введена поддержка выходного формата файла *.exe с моделью
	      памяти tiny. Активизируется ключом командной строки /TEXE.
            - Начато внедрение указателей.
            - К присваиваниям регистра EAX/AX/AL добавлена возможность делать
              их знаковыми.
            - Исправлены ошибки обнаруженные в предыдущей версии.
Return to contents.


     0.217 от 24.05.99
            - Наконец закончена реализация 32-битного кода. Теперь на C--
	      можно создавать 32-битные программы как под DOS, так и под
	      Windows (есть возможность использовать вызовы API-процедур).
            - Для директив ?ifdef/?ifndef добавлена возможность проверки
              компилируемого типа CPU. Пример: ?ifdef cpu >= 3
            - Добавлена поддержка синтаксиса: SegReg >< SegReg; - обмен
              содержимого сегментных регистров.
            - Введена оптимизация сочетаний операторов if()goto, IF()GOTO,
              IF()goto.
            - Введено игнорирование оператора else/ELSE, если предыдущий блок
              оператора if/IF заканчивается операторами: break/BREAK,
              conntinue/CONTINUE, goto/GOTO, return.
            - В операторе switch введено игнорирование последнего break/BREAK.
            - Изменена генерация кода в операциях проверки на нуль типа
              IF(variable), что позволяет получать более быстрый код, а в
              некоторых случаях и более компактный.
            - Исправлены ошибки обнаруженные в предыдущей версии.
Return to contents.


     0.218 от 14.06.99
            - Добавлена возможность инициализировать глобальные структуры при
              объявлении адресами неинициализированных переменных и адресами
              еще не объявленных переменных и меток.
            - Немного подкорректирован формат obj-файлов.
            - Для com-файлов введена директива компилятору ?startuptomain,
              по которой startup-код вставляется в начало процедуры main().
            - Добавлен ключ командной строки /w32c, позволяющий получать
              консольные программы Windows.
            - Введена директива компилятору ?undef.
            - Код начальной инициализации вынесен из компилятора в файл
              startup.h-- .
            - Для ассемблерных команд DB/DW/DD добавлен префикс повторений
	      dup.
            - Введен модификатор cdecl, позволяющий объявлять стековые
	      процедуры процедурами C-стиля. Выполнявший эту роль префикс
	      имени "c_" отменен.
            - Исправлена ошибка, не позволявшая при компиляции 32-битных
              программ под ДОС использовать неинициализированные переменные.
Return to contents.


     0.219 от 06.07.99
            - Переработана генерация obj-файлов. Появилась возможность при
	      генерации obj использовать внешние (extern) переменные,
	      процедуры и структуры.
            - Для директивы ?align добавлена возможность указывать число на
              кратное которому будет сделано выравнивание данных.
            - Введена директива ?aligncode делающая выравнивание кода на
	      кратное указанному в качестве параметра числу. Заполнение
	      ведется числом 0x90 (код инструкции NOP).
            - Удалена поддержка опции командной строки /+map и соответственно
              удалена генерация map-файла.
            - Исправлена ошибка не позволявшая обращаться к динамическим
              процедурам ранее их определения.
            - Добавлена возможность использовать локальные переменные в
              процедурах обработки прерываний.
            - Добавлена возможность обращаться к процедурам обработки
              прерываний как к обычным процедурам.
            - Добавлена возможность обращаться к процедурам объявленными как
              дальние (far).
            - Добавлены модификаторы процедур: pascal, stdcall, fastcall. Тем
              самым, снято ограничение на синтаксис имен процедур в верхнем
              или нижнем регистре.
Return to contents.


     0.220 от 23.08.99
            - В качестве имен локальных переменных стало возможным
	      использовать имена глобальных переменных, процедур и констант.
            - При объявлении тега структуры, в качестве имен элементов
              структуры, стало возможным использовать имена глобальных и
              локальных переменных, процедур и констант. Введена проверка
              повторного имени элемента тега.
            - Введена директива ?dosstring, при установки которой в TRUE
              терминатором строк будет символ доллара '$'.
            - Добавлен ключ командной строки /sobj позволяющий получать slave
              obj-модули с таблицей перемещения всех объектов.
            - Введена поддержка оператора объединения - union.
            - При умножении на число и оптимизации на скорость введен поиск
              возможности замены умножения на сдвиги и сложение.
            - Для компиляции программ под windows добавлены директивы:
              - ?imagebase value        - задать адрес Image Base отличный от
                                          0x400000.
              - ?fixuptable TRUE/FALSE  - разрешить/запретить создание FixUp
                                          таблицы (по умолчанию запрещено).
              - ?fastcallapi FALSE/TRUE - запретить/разрешить генерацию
                                          быстрого вызова API-процедур (по
                                          умолчанию разрешено).
            - Сгенерирована консольная версия компилятора.
Return to contents.


     0.221 от 10.09.99
            - Для регистровых процедур теперь можно указывать, через какие
              регистры будут передаваться параметры.
            - Добавлена директива ?compilerversion указывающая минимальную
              версию компилятора, необходимую для компиляции программы.
            - Исправлены ошибки: в реализации директивы ?atexit, в
	      формировании таблиц fix_up для obj-файлов, в объявлении
	      локальных переменных.
Return to contents.


     0.222 от 19.09.99
            - При программировании под windows появилась возможность делать
              экспорт процедур и получать файлы библиотек - DLL.
            - Добавлена поддержка альтернативного расширения исходных файлов -
              *.CMM.
            - Немного изменен синтаксис декларации API-процедур.
            - Исправлены ошибки: в заголовке exe-файла под Windows; в
              объявлении структур; в генераторе 32-битного кода; в умножении
              при генерации файлов под windows; в операторе sizeof.
Return to contents.


     0.223 от 05.10.99
            - Добавлена поддержка вложенных структур.
            - 16-ричные числа можно теперь записывать и в стиле ассемблера.
            - Для объявления директив компилятору, теперь, кроме символа '?'
              можно использовать символ '#'.
            - Исправлены ошибки: в связке IF-GOTO; генераторе 32-битного кода.
Return to contents.


     0.224 от 28.10.99
            - Добавлен ключ командной строки /AP делающий выравнивание
	      процедур на границу параграфа, но только при компиляции
	      программ для Windows.
            - Для консольной версии компилятора при создании 32-битных
	      программ снято ограничение размера 64кб.
            - При компиляции программ под Windows все таблицы помещаются в
	      одну секцию.
            - Добавлены директивы компилятору: #pragma, #winmonoblock.
            - Добавлены предопределенные макросы __DATE__ и __TIME__.
            - Для операторов BREAK, break, CONTINUE, continue можно указывать
              число циклов, через которое будет передано управление.
            - Исправлены ошибки: в диагностике превышения 64кб размера; при
              передаче отрицательного числа в качестве параметра стековой
              процедуре в 32-битном режиме; в консольной версии при компиляции
              16-битных программ, если использовалась неинициализированная
              переменная с отрицательным индексом типа var[-1], искажался
              последующий код; в формировании fixup таблицы pe-файла; в
              диагностике позднего объявления процедуры и др.
Return to contents.


     0.225 от 09.12.99
            - Изменен алгоритм поиска директив и зарезервированных слов на
              более компактный и более быстрый.
            - В генераторе 32-битного кода исправлены ошибки и в некоторых
              случаях применены более компактные формы инструкций.
Return to contents.


     0.226 от 10.01.00
            - В операциях сравнения введена поддержка символа '!' -
              инвертирующего результат операции сравнения.
            - Исправлены ошибки: выдавалось ложное сообщение об ошибке в
              выражениях типа intvar = #ucnownlabel + number ; происходил
              сбой парсера при разборе выражений типа: $ push 8, AX, var ;
              генерировался неправильный месяц при использовании
              макроподстановки выражения __DATE__.
Return to contents.


     0.227 от 09.02.00
            - Появилась возможность инициализировать локальные переменные
              при их объявлении.
            - Компилятор контролирует число и тип параметров передаваемых
              стековой процедуре, если она была предварительно объявлена.
            - Введены новые операторы LOOPNZ и loopnz.
            - Исправлены ошибки, возникавшие при использовании переменных
              типа float и при использовании в циклах for/FOR оператора не
              заключенного в блок.
Return to contents.


     0.228 от 08.08.00
            - Добавлена возможность через define определять вещественные
              числа типа float.
            - Введена поддержка внутренних процедур-макросов: atan, atan2,
              cos, exp, fabs, log, log10, sin, sqrt, tan.
            - Код, генерируемый при использовании переменных типа float,
              стал более компактным и быстрым.
            - Добавлен новый режим оптимизации - слияние одинаковых
              строковых констант. Включатся с командной строки /ost или
              директивой #pragma option ost.
            - Добавлен ключ командной строки /d=idname, позволяющий с
              командной строки определить идентификатор idname равным TRUE.
            - Исправлены ошибки: при использовании extern процедур;
              инициализации локальных указателей; генераторе 32-битного кода.
Return to contents.


     0.229 от 06.04.00
            - При безусловном переходе на ранее определенную метку или
              процедуру компилятор автоматически определяет тип перехода
              (short или near) независимо от заданного типа.
            - Для числовых значений допустимо использовать операцию NOT -
              символ '!'. Например: AX = ! 0x3f ;
            - Для выражений DSWORD[var] DSDWORD[var]... убрано масштабирование
              по типу переменной. Для выражений var[idxvar] можно отключить
              масштабирование, поместив в начале idxvar символ '*'.
            - При вычислении в не-AX/EAX регистр разрешено использовать сдвиг
              на CL  DX=1 << CL;
            - Исходный текст главного компилируемого модуля теперь можно
              хранить и в файлах с расширениями: "c", "h--", "hmm", "h".
            - Исправлена ошибка, иногда возникавшая в цикле for/FOR.
Return to contents.


     0.230 от 13.06.00
            - Улучшена диагностика и обработка ошибок.
            - Изменился алгоритм загрузки c--.ini файла.
            - Стало возможным использовать ассемблерные инструкции без
              включения их в asm-блоки и без символа '$'. Этот режим
              включается командой /ia.
            - Список поддерживаемых компилятором ассемблерных инструкций
              можно получить, набрав в командной строке: >C-- /lai.
            - В консольной версии компилятора увеличены в два раза
              максимальный размер идентификатора и строковой переменной.
            - Для директивы include стало возможным использовать имена файлов
              в угловых скобках <>. Для таких файлов изменен алгоритм поиска.
            - Изменился синтаксис параметров командной строки.
            - Теперь компилятор при повторной загрузке включаемого файла
              пропускает его. Отключить это можно с командной строки
              командой /cri-.
            - При объявлении структур с известным тегом можно опускать
              ключевое слово "struct".
Return to contents.


     0.231 от 16.07.00
            - Для программ под Windows введена поддержка встроенных процедур
              'ATEXIT', 'ABORT', 'EXIT'.
            - Увеличена скорость компиляции программ под Windows.
            - Введена поддержка директивы #pragma startup.
            - Заполнение пустого места выделенного под инициализированные
              переменные ведется кодом, определенным директивой '#aligner',
              по умолчанию 0.
            - Для глобальных инициализированных массивов можно не указывать
              число элементов.
            - Расширена область использования символа '$' и оператора 'sizeof'.
            - Восстановлена работа директивы '#startuptomain' .
            - Исправлены ошибки: при работе с переменными из вложенных
              структур; в 32-битном режиме для параметров типа word
              исправлена организация стека; и многие другие мелкие ошибки.
            - Добавлено: для инструкции '$push DWORD/LONG number' модификатор
              типа числа можно писать маленькими буквами 'dword/long';
              возможность получать адрес указателя; для инструкций 'DD' и 'DW'
              указывать адрес не инициализированной переменной; для
              инструкции 'push' брать адрес еще не известного идентификатора.
Return to contents.


     0.232 от 31.08.2000
            - Реализованы некоторые рекомендации по улучшению быстродействия
              генерируемого кода для процессора Pentium и лучше.
            - Произошли изменения в параметрах командной строки компилятора:
              - добавлена большая группа параметров повторяющих функции
	        директив не имевших аналогов в параметрах.
              - у параметров имевших два синтаксических варианта убран более
                длинный вариант.
              - добавлен новый параметр командной строки - /MIF= ,
                определяющий имя компилируемого файла.
              - добавлен новый параметр командной строки - /AC , делающий
                выравнивание начала циклов for/FOR, do-while, while/WHILE,
                loop/loopnz/LOOPNZ.
            - Файл начальной инициализации *.ini может иметь любое имя.
            - Сообщения об ошибках теперь выводятся параллельно и в файл с
              именем главного модуля и расширением *.err.
            - Файл с предупреждениями теперь создается только в случае если
	      эти предупреждения есть.
            - В операторе-переключателе 'switch' можно использовать
	      'continue', если он находится в каком-то операторе-цикле.
            - В предупреждениях, о возможности использования более коротких
              форм операторов, теперь указывается правильный номер строки.
            - Инструкция 'push', у которой операнд число или адрес
	      идентификатора, в 16 битном режиме по умолчанию вставляет в
	      стек 16 битное число, а в 32 битном - 32 битное.
            - Добавлено:
              - делать goto на api-процедуры.
              - если goto делается на процедуру, то можно передавать
	        параметры.
            - Исправлены ошибки:
              - в передаче параметров процедурам в 32-битном режиме.
              - в работе с указателями.
              - в генераторе таблицы перемещений для windows.
              - в объявлении вложенных структур.
              - при обращении к переменной из 32-битного и 16-битного режима
                одновременно.
Return to contents.


     0.233 от 11.09.2000
            - Исправлена ошибка в заголовке DOS32 программ.
            - Введен контроль за регистрами при замене MOVZX reg32:16,mem16:8
              на XOR reg32:16,reg32:16 + MOV reg16:8,mem16:8.
            - Продолжена оптимизация выходного кода на скорость и на размер.
Return to contents.


     0.234 от 01.10.2000
            - При объявлении API процедур поддерживаются имена типа
	      ProcName@8.
            - Добавлена опция командной строки /ind=FILENAME указывающая на
	      имя файла DLL, из которого будет считан список экспортируемых
	      имен.
            - Добавлена опция командной строки /ws=FILENAME указывающая имя
	      DOS stub файла при компиляции программ для windows.
            - Немного изменена функция ключа командной строки /ns. Теперь
	      этот ключ запрещает подключение stub для windows программ.
            - В программах для gui windows не инициализированные данные
	      автоматически помещаются в отдельную секцию. Использовать эту
	      секцию при компиляции консольных программ или DLL можно с
	      помощью опции командной строки /wbss.
            - В строках с директивой #pragma теперь можно делать комментарии.
            - Пути к файлам в операторах FROM, EXTRACT, sizeof теперь надо
              писать с одним '\', т.е. "c:\path\file".
            - Восстановлена работа опции /ia.
            - Исправлены ошибки:
              - в связке операторов IF - goto;
              - при использовании смещений идентификаторов под windows;
              - при инициализации структуры строками;
            - Добавлено:
              - брать адрес еще не объявленной структуры;
Return to contents.


     0.235 от 11.11.2000
            - В программах под DOS32 изменен способ передачи stub-у размера
              памяти, необходимого для работы программы, и введена поддержка
              встроенного компактного stub-а, использующего dpmi сервис.
            - Улучшен код, получаемый при использовании переменных типа float
              в 32-битном режиме.
            - В файлах динамических библиотек (DLL) можно использовать
              процедуру 'main'.
            - Локальные переменные теперь можно объявлять и в начале блока
              процедуры.
            - Сделана генерация obj-файлов при компиляции программ под DOS32.
            - Введены ключевые слова 'short', 'signed' и 'unsigned'.
            - Для числовых констант сделана поддержка суффиксов 'L', 'U' и
	      'F'.
            - Генерация отладочной информации включается ключом командной
              строки /dbg.
            - Исправлены ошибки:
              - в структуре выходного PE-файла;
              - в операциях сравнения с переменными типа float;
              - ложное сообщение, о неожиданном конце файла, при оптимизации
                числовых выражений;
              - в выражениях сравнения при использовании символа инверсии '!'
                иногда генерировался неправильный JMP;
              - в парсере, при разборке числа, иногда приводившая к
                зацикливанию компилятора;
              - при обращении к локальному массиву через переменную-индекс.
              - в объявлении параметров процедуры, когда тип переменной
                определялся через define;
            - Добавлено:
              - для инструкции DB/DW/DD, PUSH использовать отрицательные
                числа;
Return to contents.


     0.236 от 13.02.2001
            - Компилятор поддерживает все ассемблерные инструкции процессора
              Intel Pentium II.
            - Расширены возможности в операциях сравнения.
            - Введена опция создания ассемблерного листинга.
            - Введена возможность отображать тег структуры на блок памяти.
            - Введена поддержка динамических переменных и структур.
            - Для работы с макросами введена поддержка inline-процедур и
              директива #inline.
            - Можно запретить вывод определенных типов предупреждений.
            - Компилятор выдает предупреждения о возможно не использованных
              процедурах, глобальных переменных и структурах.
            - Вызов WIN API процедур теперь возможен и по ординалам.
            - Введена поддержка предопределенных макросов __FILE__ и __LINE__.
              В зависимости от режима компиляции определяются идентификаторы:
              __CONSOLE__, __DLL__, __FLAT__, __MSDOS__, __WIN32__, __TINY__,
              __SMALL__.
            - Сняты ограничения на динамические процедуры.
            - Введена поддержка двоичных чисел в стиле ассемблера.
            - Исправлены ошибки:
              - в ассемблерных инструкциях mov variable,number генерировался
                неверный код;
              - в заголовке PE-файла указывался неверный размер таблицы
                перемещений;
              - при применении оператора sizeof, иногда возникали ошибки;
              - размер параметров стека последней процедуры передавались
	        первой процедуре включаемого файла;
              - при обращении в 32-битном режиме к переменной объявленной в
                16-битном режиме и при обращении в 16-битном режиме к
                переменной объявленной в 32-битном режиме генерировался
                неправильный адрес;
              - при обращении к 16-битной переменной в 32-битном режиме, адрес
                которой определяется адресом лежащего ниже идентификатора,
                искажался адрес;
              - при использовании инициализированных локальных переменных
                иногда выдавалось ложное сообщение об ошибке;
Return to contents.


     0.237 от 5.11.2001
            - В тело процедуры можно вставлять любую динамическую процедуру.
            - Компилятор поддерживает все ассемблерные инструкции процессора
              Intel Pentium III.
            - В startup введена очистка post-области данных. Включается опцией
              командной строки -CPA.
            - Введен автоматический выбор разрядности регистров.
            - В startup введено сохранение адреса переменных окружения.
              Активизируется опцией командной строки -ENV.
            - Для case/CASE введена поддержка диапазонов значений.
            - Для процедур можно указывать флаг возврата.
            - Введена поддержка LE формата для DOS32 exe-файлов.
            - Возможно получать ассемблерный листинг указанных фрагментов
              программы.
            - Расширены возможности не AX/EAX регистров.
            - Компилятор выдает предупреждения о возможно не использованных
              локальных и параметрических переменных.
            - Для опций разрешающих выравнивание процедур и циклов можно
              задавать величину выравнивания.
            - Имена MMX, TR, DR, CR - регистров теперь не являются
              зарезервированными.
            - В ассемблерных инструкциях имена всех регистров можно писать
              маленькими и большими буквами.
            - Выполнена оптимизация оператора 'switch'. Добавлены
              зарезервированные слова: 'SWITCH' и 'CASE'.
            - Выполнена оптимизация кода при операциях сравнения. В
	      сравнениях допустимо использовать ассемблерную инструкцию
	      'test'.
Return to contents.


     0.238 от 28.03.2002
            - Добавлена компиляция и линковка ресурсов.
            - Допускается использовать метки вне процедур.
            - В структурах можно объявлять процедуры.
            - Сделана поддержка наследования классов.
            - Расширены возможности указателей.
            - В стековые процедуры можно передавать параметры через регистры.
            - Введена поддержка связанного присваивания.
            - Введена операция разрешения видимости '::'.
            - Добавлено зарезервированные слова 'RETURN', 'static'.
            - Компилятор, при включенной оптимизации на размер кода и при
              использовании динамических процедур в качестве макросов может
              заменять оператор return/RETURN на goto/GOTO.
            - Выполнена оптимизация связки IF()RETURN, if()return и связок
              else с операторами передачи управления (goto, break, BREAK ...).
            - Выдаются предупреждения о возможно не исполнимом коде.
            - Введена поддержка битовых полей структур.
Return to contents.


     0.239 от 14.12.2002
	    - Введена поддержка выходного формата файла для MeOS.
            - Введены дополнительные опции управления оптимизацией.
            - Введена опция разрешения выравнивания в структурах.
            - Оператор 'switch/SWITCH' может быть реализован 3 различными
              способами.
            - Оператор 'while/WHILE' теперь работает немного быстрее.
            - Расширены возможности операторов сравнения ('if', 'while',
              'for'...).
            - Для переменных введена возможность, указывать сегмент отличный
              от сегмента по умолчанию.
Return to contents.



                
Сайт создан в системе uCoz
Сайт создан в системе uCoz