-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathc--news.txt
584 lines (547 loc) · 49.3 KB
/
c--news.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
v0.240
- Added support for Linux, MacOS, FreeBSD, OpenBSD
- Various bugfixes
v0.239
- Расширены возможности sizeof.
- Расширен синтаксис локальных меток.
- Для функций введено ключевое слово 'uses'.
- inline-функции могут использовать локальные переменные других функций.
- Компилятор ресурсов обрабатывает оператор 'NOT', 'OR', 'XOR', 'AND'.
- Расширены возможности директивы #print.
- Для MeOS введена поддержка функций EXIT(), ATEXIT(), PARAMSTR().
- Расширены возможности директив #ifdef и #ifndef.
- В компиляторе ресурсов добавлена поддержка определяемых пользователем ресурсов.
- Для работы с классами добавлена поддержка конструктора и деструктора,
введены операторы 'new' и 'delete'.
- Добавлена оптимизация повторной инициализации регистров. Отключается опцией
/oir-.
- Добавлена возможность получать 32-битные бинарные файлы. Опция /b32.
- Имя и расположение startup.h-- файла можно указывать опцией командной
строки /sf=pathname
- Для Windows программ добавлена возможность задавать значение выравнивания
файла (опция WAF=number).
- Для локальных структур добавлена поддержка 'static'.
- В 'inline' процедурах можно использовать локальные 'static' переменные.
- По адресам в регистре или переменной можно делать вызовы процедур с
различным типом передачи параметров.
- Для строковых констант введена поддержка суффиксов.
- В компиляторе ресурсов добавлена поддержка VERSIONINFO.
- В программах под Windows опцией WSI включается генерация усеченной таблицы
импорта.
- Введена поддержка выходного формата файла для MeOS.
- Введены дополнительные опции управления оптимизацией.
- Введена опция разрешения выравнивания в структурах.
- Оператор 'switch/SWITCH' может быть реализован 3 различными способами.
- Оператор 'while/WHILE' теперь работает немного быстрее.
- Расширены возможности операторов сравнения ('if', 'while', 'for'...).
- Для переменных введена возможность, указывать сегмент отличный от сегмента
по умолчанию.
v0.238
- Добавлена компиляция и линковка ресурсов.
- Допускается использовать метки вне процедур.
- В структурах возможно объявлять процедуры.
- Сделана поддержка наследования классов.
- Расширены возможности указателей.
- В стековые процедуры можно передавать параметры через регистры.
- Введена поддержка связанного присваивания.
- Введена операция разрешения видимости '::'.
- Добавлено зарезервированные слова 'RETURN', 'static'.
- Компилятор, при включенной оптимизации на размер кода и при использовании
динамических процедур в качестве макросов может заменять оператор
return/RETURN на goto/GOTO.
- Выполнена оптимизация связки IF()RETURN, if()return и связок else с
операторами передачи управления (goto, break, BREAK ...).
- Выдаются предупреждения о возможно не исполнимом коде.
- Введена поддержка битовых полей структур.
v0.237
- В тело процедуры можно вставлять любую динамическую процедуру.
- Компилятор поддерживает все ассемблерные инструкции процессора Intel
Pentium III.
- В startup введена очистка post-области данных. Включается опцией командной
строки -CPA.
- Введен автоматический выбор разрядности регистров.
- В startup введено сохранение адреса переменных окружения. Активизируется
опцией командной строки -ENV.
- Для case/CASE введена поддержка диапазонов значений.
- Для процедур возможно указывать флаг возврата.
- Введена поддержка LE формата для DOS32 exe-файлов.
- Возможно получать ассемблерный листинг указанных фрагментов программы.
- Расширены возможности не AX/EAX регистров.
- Компилятор выдает предупреждения о возможно не использованных локальных и
параметрических переменных.
- Для опций разрешающих выравнивание процедур и циклов можно задавать
величину выравнивания.
- Имена MMX, TR, DR, CR - регистров теперь не являются зарезервированными.
- В ассемблерных инструкциях имена всех регистров можно писать маленькими и
большими буквами.
- Выполнена оптимизация оператора 'switch'. Добавлены зарезервированные
слова: 'SWITCH' и 'CASE'.
- Выполнена оптимизация кода при операциях сравнения. В сравнениях допустимо
использовать ассемблерную инструкцию 'test'.
v0.236
- Компилятор поддерживает все ассемблерные инструкции процессора 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-битном режиме, адрес которой
определяется адресом лежащего ниже идентификатора, искажался адрес;
- при использовании инициализированных локальных переменных иногда
выдавалось ложное сообщение об ошибке;
v0.235
- В программах под 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 использовать отрицательные числа;
v0.234
- При объявлении 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;
- при инициализации структуры строками;
- Добавлено:
- брать адрес еще не объявленной структуры;
v0.233
- Исправлена ошибка в заголовке DOS32 программ.
- Введен контроль за регистрами при замене MOVZX reg32:16,mem16:8 на
XOR reg32:16,reg32:16 + MOV reg16:8,mem16:8.
- Продолжена оптимизация выходного кода на скорость и на размер.
v0.232
- Реализованы некоторые рекомендации по улучшению быстродействия генерируемого
кода для процессора Пентиум и лучше.
- Произошли изменения в параметрах командной строки компилятора:
- добавлена большая группа параметров повторяющих функции директив не
имевших аналогов в параметрах.
- у параметров имевших два синтаксических варианта убран более длинный
вариант.
- добавлен новый параметр командной строки - /MIF=<file> , определяющий
имя компилируемого файла.
- добавлен новый параметр командной строки - /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-битного режима одновременно.
v0.231
- Для программ под Windows введена поддержка встроенных процедур 'ATEXIT',
'ABORT', 'EXIT'.
- Увеличена скорость компиляции программ под Windows.
- Введена поддержка директивы #pragma startup.
- Заполнение пустого места выделенного под инициализированные переменные
ведется кодом, определенным директивой '#aligner', по умолчанию 0.
- Для глобальных инициализированных массивов можно не указывать число
элементов.
- Расширена область использования символа '$' и оператора 'sizeof'.
- Восстановлена работа директивы '#startuptomain' .
- Исправлены ошибки: при работе с переменными из вложенных структур; в
32-битном режиме для параметров типа word исправлена организация стека;
и многие другие мелкие ошибки.
- Добавлено: для инструкции '$push DWORD/LONG number' модификатор типа числа
можно писать маленькими буквами 'dword/long'; возможность получать адрес
указателя; для инструкций 'DD' и 'DW' указывать адрес не инициализированной
переменной; для инструкции 'push' брать адрес еще не известного
идентификатора.
v0.230
- Улучшена диагностика и обработка ошибок.
- Изменился алгоритм загрузки c--.ini файла.
- Стало возможным использовать ассемблерные инструкции без включения их в
asm-блоки и без символа '$'. Этот режим включается командой /ia.
- Список поддерживаемых компилятором ассемблерных инструкций можно получить
набрав в командной строке: >C-- /lai.
- В консольной версии компилятора увеличены в два раза максимальный размер
идентификатора и строковой переменной.
- Для директивы include стало возможным использовать имена файлов в угловых
скобках <>. Для таких файлов изменен алгоритм поиска.
- Изменился синтаксис параметров командной строки.
- Теперь компилятор при повторной загрузке включаемого файла пропускает его.
Отключить это можно с командной строки коммандой /cri-.
- При объявлении структур с известным тегом можно опускать ключевое слово
"struct".
v0.229
- При безусловном переходе на ранее определенную метку или процедуру
компилятор автоматически определяет тип перехода (short или near)
независимо от заданного типа.
- Для числовых значений допустимо использовать операцию NOT - символ '!'.
Например: AX = ! 0x3f ;
- Для выражений DSWORD[var] DSDWORD[var]... убрано масштабирование по типу
переменной. Для выражений var[idxvar] можно отключить масштабирование
поместив в начале idxvar символ '*'.
- При вычислении в не-AX/EAX регистр разрешено использовать сдвиг на CL
DX=1<<CL;
- Исходний текст главного компилируемого модуля теперь можно хранить и в
файлах с расширениями: "c", "h--", "hmm", "h".
- Исправлена ошибка иногда возникавшая в цикле for/FOR.
v0.228
- Добавлена возможность через define определять вещественные числа типа float.
- Введена поддержка внутренних процедур-макросов: atan, atan2, cos, exp, fabs,
log, log10, sin, sqrt, tan.
- Код, генерируемый при использовании переменных типа float, стал более
компактным и быстрым.
- Добавлен новый режим оптимизации - слияние одинаковых строковых констант.
Включатся с командной строки /ost или директивой #pragma option ost.
- Добавлен ключ коммандной строки /d=idname, позволяющий с коммандной строки
определить идентификатор idname равным TRUE.
- Исправлены ошибки: при использовании extern процедур; инициализации
локальных указателей; генераторе 32-битного кода
v0.227
- Появилась возможность инициализировать локальные переменные при их
объявлении.
- Компилятор контролирует число и тип параметров передаваемых стековой
процедуре, если она была предварительно объявлена.
- Введены новые операторы LOOPNZ и loopnz.
- Исправлены ошибки возникавшие при использовании переменных типа float и
при использовании в циклах for/FOR оператора не заключенного в блок.
v0.224 от 28.10.99
- Добавлен ключ командной строки /AP делающий выравнивание процедур на
границу параграфа, но только при компиляции программ для Windows.
- Для консольной версии компилятора при создании 32-битных программ снято
ограничение размера 64кб.
- При компиляции программ под Windows все таблицы помещаются в одну секцию.
- Добавлены директивы компилятору: #pragma, #winmonoblock.
- Добавлены предопределенные макросы __DATE__ и __TIME__.
- Для операторов BREAK, break, CONTINUE, continue можно указывать число циклов
через которое будет передано управление.
- Исправлены ошибки: в диагностике превышения 64кб размера; при передаче
отрицательного числа в качестве параметра стековой процедуре в 32-битном
режиме; в консольной версии при компиляции 16-битных программ, если
использовалась неинициализированная переменная с отрицательным индексом
типа var[-1], искажался последующий код; в формировании fixup таблицы
pe-файла; в диагностике позднего объявления процедуры и др.
v0.223 от 05.10.99
- Добавлена поддержка вложенных структур.
- 16-ричные числа можно теперь записывать и в стиле ассемблера.
- Для объявления директив компилятору, теперь, кроме символа '?' можно
использовать символ '#'.
- Исправлены ошибки: в связке IF-GOTO; генераторе 32-битного кода;
v0.222 от 19.09.99
- При программировании под windows появилась возможность делать экспорт
процедур и получать файлы библиотек - DLL.
- Добавлена поддержка альтернативного расширения исходных файлов - *.CMM.
- Немного изменен синтаксис декларации API-процедур.
- Исправлены ошибки: в заголовке exe-файла под Windows; в объявлении структур;
в генераторе 32-битного кода; в умножении при генерации файлов под
windows; в операторе sizeof.
v0.221 от 10.09.99
- Для регистровых процедур теперь можно указывать, через какие регистры будут
передаваться параметры.
- Добавлена директива ?compilerversion указывающая минимальную версию
компилятора, необходимую для компиляции программы.
- Исправлены ошибки: в реализации директивы ?atexit, в формировании таблиц
fix_up для obj-файлов, в объявлении локальных переменных...
v0.220 от 23.08.99
- В качестве имен локальных переменных стало возможным использовать имена
глобальных переменных, процедур и констант.
- При объявлении тега структуры, в качестве имен элементов структуры, стало
возможным использовать имена глобальных и локальных переменных, процедур
и констант. Введена проверка повторного имени элемента тега.
- Введена директива ?dosstring, при установки которой в TRUE терминатором
строк будет символ доллара '$'.
- Добавлен ключ командной строки /sobj позволяющий получать slave obj-модули
с таблицей перемещения всех объектов.
- Введена поддержка оператора объединения - union.
- При умножении на число и оптимизации на скорость введен поиск возможности
замены умножения на сдвиги и сложение.
- Для компиляции программ под windows добавлены директивы:
- ?imagebase value - задать адрес Image Base отличный от 0x400000.
- ?fixuptable TRUE/FALSE - разрешить/запретить создание FixUp таблицы (по
умолчанию запрещено).
- ?fastcallapi FALSE/TRUE - запретить/разрешить генерацию быстрого вызова
API-процедур (по умолчанию разрешено).
- Сгенерирована консольная версия компилятора.
v0.219 от 06.07.99
- Переработана генерация obj-файлов. Появилась возможность при генерации obj
использовать внешние (extern) переменные, процедуры и структуры.
- Для директивы ?align добавлена возможность указывать число на кратное
которому будет сделано выравнивание данных.
- Введена директива ?aligncode делающая выравнивание кода на кратное
указанному в качестве параметра числу. Заполнение ведется числом 0x90 (код
инструкции NOP).
- Удалена поддержка опции командной строки /+map и соответственно удалена
генерация map-файла.
- Исправлена ошибка не позволявшая обращаться к динамическим процедурам
ранее их определения.
- Добавлена возможность использовать локальные переменные в процедурах
обработки прерываний.
- Добавлена возможность обращаться к процедурам обработки прерываний как к
обычным процедурам.
- Добавлена возможность обращаться к процедурам объявленными как дальние (far).
- Добавлены модификаторы процедур: pascal, stdcall, fastcall. Тем самым снято
ограничение на синтаксис имен процедур в верхнем или нижнем регистре.
v0.218 от 14.06.99
- Добавлена возможность инициализировать глобальные структуры при объявлении
адресами неинициализированных переменных и адресами еще не объявленных
переменных и меток.
- Немного подкорректирован формат obj-файлов.
- Для com-файлов введена директива компилятору ?startuptomain, по которой
startup-код вставляется в начало процедуры main().
- Добавлен ключ командной строки /w32c, позволяющий получать консольные
программы Windows.
- Введена директива компилятору ?undef.
- Код начальной инициализации вынесен из компилятора в файл startup.h-- .
- Для ассемблерных команд DB/DW/DD добавлен префикс повторений dup.
- Введен модификатор cdecl, позволяющий объявлять стековые процедуры
процедурами C-стиля. Выполнявший эту роль префикс имени "c_" отменен.
- Исправлена ошибка не позволявшая при компиляции 32-битных программ под ДОС
использовать неинициализированные переменные.
v0.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),
что позволяет получать более быстрый код, а в некоторых случаях и более
компактный.
- Исправлены ошибки обнаруженные в предудущей версии.
v0.216 от 21.04.99
- Появилась возможность компилировать код для расширителей ROM-BIOS.
Включается ключом командной строки /ROM.
- Введена поддержка выходного формата файла *.exe с моделью памяти tiny.
Активизируется ключом командной строки /TEXE.
- Начато внедрение указателей.
- К присваиваниям регистра EAX/AX/AL добавлена возможность делать их
знаковыми.
- Исправлены ошибки обнаруженные в предыдущей версии.
v0.215 от 14.03.99
- В два раза увеличен стек компилятора.
- Удалена поддержка ключей командной строки /MACRO /PROC /REGPROC.
- Для проверок условий добавлены два специальных условных выражения MINUSFLAG
и PLUSFLAG, которые делают проверку бита знака в регистре флагов.
- Введено объявление процедур. Оно является не обязательным, но желательным.
- К присваиваниям переменной добавлена возможность изменять тип на время
вычисления их значений.
v0.214 от 18.02.99
- Для ассемблерных инструкций PUSH и POP добавлена возможность задавать
несколько операндов через запятую.
- Добавлена поддержка процедуры ATEXIT. Включается директивой ?atexit.
- Добавлена поддержка внешней библиотеки динамических процедур и почти все
внутренние процедуры перенесены в неё.
- Перенесены в библиотеку динамических процедур и многие процедуры из
включаемых файлов. Всего на сегодняшний день библиотека содержит 431
процедуру.
- Исправлены ошибки допущенные в предыдущей версии.
v0.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-ричных символов строк и несколько
ошибок генерации кода при использовании встроенного ассемблера.
v0.212 от 7.12.98
- Введена поддержка структур.
- Добавлен оператор sizeof.
- Теперь компилятор может генерировать вызовы стековых процедур и в C-стиле.
- Появилась возможность добавлять пути поиска включаемых файлов из командной
строки ключем /ip=<path> или строкой в ini-файле ip=<path> или директивой
компилятору ?includepath "path".
- Исправлена ошибка не позволявшая использовать в синтаксе некоторых
ассемблерных инструкций (int, loop ) маленькие буквы.
- Исправлены ошибки допущенные в предыдущей версии.
v 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;).
v 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=<file_warning>.
- Добавлена поддержка 32-битной адресации к памяти.
- Откорректирована и расширены возможности индексирования массива и переменных.
- Добавлена возможность использовать inline в процедурах обработки прерывания.
v 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";
v 0.208 от 6.09.98
- Реализована поддержка переменных типа float.
- В оператор switch добавлена возможность делать подряд несколько пустых case.
- Исправлено выравнивание 32-битных не инициализированных переменных.
- Добавлена возможность использовать директивы компилятору в ассемблерных
блоках и при объявлении локальных переменных.
- Регистры инструкций FPU (st(0), st(1)...) можно набирать как маленькими
буквами, так и большими.
- Откорректирована генерация префикса SS при косвенной адресации. Теперь
директива компилятору assumeDSSS не играет никакой роли.
v 0.207a от 6.08.98
- Добавлена директива компилятору ?else.
- Добавлена пропущенная ассемблерная инструкция FPU - fstp.
- Добавлена ассемблерная инструкция FPU - fildq.
- Исправлена ошибка: при операции var <<= n и var >>= n (сдвиг переменной с
присвоением на n битов) генерировался неверный код.
- Исправлена ошибка: при сравнении 32-битной переменной с числом - типа
if(var32 > n) - генерировался неверный код.
v 0.207 от 30.07.98
- Добавлена возможность использовать в качестве индекса к массиву данных
другую переменную.
- Продолжена оптимизация выходного кода.
- Добавлены ассемблерные команды FPU.
- Убраны, заложенные ранее, переменные fixed32s и fixed32u.
- Введена переменная типа float. Но полностью еще не реализована.
- Исправлена допущенная мною ошибка: при использовании сравнения двух
переменных типа long или dword генерировался код сравнения слов.
v 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 процессора.
- Исправлена ошибка - при выполнении ассемблерной команды <TEST dwordvar,reg32>
генерировался неверный код.
- Убрана несуществующая ассемблерная команда CBD. Добавлена команда CWDE,
генерирующая тот же код.
v 0.205 от 4.05.98
- Исправлена ошибка в реализации оператора GOTO и goto
- Добавлены операторы BREAK, break, CONTINUE, continue.
- Добавлен цикл WHILE{}, while{}, FOR{}, for{}.
- Произведена ревизия выходного кода, и в некоторых случаях теперь генерируется
более компактный код.
- Исправлена ошибка: при компиляции команды $PUSH <непосредственное значение>
- искажалась величина <непосредственного значения>.
- Добавлена возможность заносить в стек двойное слово. Формат команды:
$PUSH DWORD value или $PUSH LONG value.
- Добавлено ключевое слово asm.
v 0.204 от 13.04.98
- Исправлена ошибка: вместо $MOVZX получалось MOVSX
- Добавлена поддержка ini файла
- Некоторые внутренние процедуры имеют более короткий код
- Исправлена ошибка в заголовке при создании EXE файла
- EXE файл теперь работает с командной строкой (директива parsecommandline,
процедуры PARAMCOUNT, PARAMSTR)
- Исправлена ошибка установки заглушки CTRLC
- Добавлены операторы GOTO и goto
- Оптимизация кода компилятора