23.04.2022
Продолжение оптимизация кода. Если возможно, адреса переменных пишутся через через [<R>]+смещение8. Например, если в коде встречаются команды
mov rsi,offset X
mov Y,1
и между адресами X и Y разница в 10 байт, то вторая команда заменяется на
mov b ptr [rsi]+10,1
07.03.2022
Оптимизация передачи параметров при вызове процедуры. Если возможно, адреса параметров пишутся через [RBX]+…
23.01.2022
Исправлена ошибка не выделения стека для 4 переменных, в случае, если WinApi не имеет входных параметров. Для Windows 7 это не влияло, для Windows 10 WinApi GetClipBoardOwner портило адрес возврата в стеке
24.12.2021
Улучшена оптимизация регистров. Файлы .SYM и .TRF теперь можно разместить в ресурсах .EXE, например, составив для программы TEST.EXE следующий RC-файл с элементами с кодом 50
и далее оттранслировав его RC-транслятором и вставив в сборку по описанной ранее технологии
05.10.2021
Добавлены встроенные функции REAL, IMAG, COMPLEX, CONJG
25.09.2021
Улучшены отладочные команды, вставляемые при компиляции с ключами “Q”, “R”, “T”
19.09.2021
Очередная доработка оптимизатора, улучшающая использование регистров
19.08.2021
Наконец исправлен старинный недостаток компилятора – в универсальной функции Булевой алгебры BOOL третий параметр (формула логики) теперь может быть переменной, а не только константой, как ранее. При этом универсальность этой функции, обесцененная этим недостатком, восстановилась
08.08.2021
Улучшена кодогенерация в части использования регистров R8-R14
21.02.2021
Исправлена ошибка преобразования текстовой строки в битовую, возникавшая в некоторых случаях.
12.12.2020
Добавлена проверка на наличие EXTERNAL-переменных с одинаковым именем, но разными атрибутами.
27.09.2020
Как и в PL/1 для MULTICS, в заголовке процедуры (но не в операторе описания DCL) ключевое слово RETURNS стало необязательным, например,
вместо
F:PROC(X,Y) RETURNS(FLOAT);
можно писать
F:PROC(X,Y) FLOAT;
1.06.2020
Общая встроенная таблица имен системных подпрограмм Windows расширена до почти полных списков экспорта библиотек – свыше 9100 имен системных вызовов.
Для таких имен можно не указывать из какой они библиотеки. Включены списки экспорта из следующих библиотек Windows:
KERNEL32, USER32, GDI32, SHELL32, WINMM, IMAGEHLP, OLE32, NTDLL, WININET, ADVAPI32, COMCTL32, GDIPLUS, WINHTTP, WSOCK32, MAPI32
9.11.2019
Добавлен ключ M вывода части сообщений компилятора на английском
Ключ M может быть задан через реестр:
[HKEY_CURRENT_CONFIGSoftwarePL/1]
“M”=dword:00000000
28.10.2019
Внутри констант – битовых строк, разрешены подчеркивания
5.9.2019
Допустима «невидимая» переменная цикла типа:
DO TO 10; … END;