О последнем релизе (15.03.2024)

15.03.2024

Добавлена новая встроенная функция датчика случайных чисел RDRAND к уже имеющейся встроенной функции RANDOM. Новая функция имеет такой же аргумент (диапазон случайных значений), но получает случайное значение не с помощью формулы, а с помощью процессорной команды RDRAND.

14.01.2024

Исправлена помарка в системной библиотеке, из-за которой после исключения (например, целочисленного переполнения) состояние FPU менялось в части разрешения прерываний по точности. Т.е. вместо обычного состояния FPU CW=360 устанавливался режим CW=340 .

31.08.2023

Из-за помарки в компиляторе, в коде вызова WinAPI генерировался лишний REX- префикс. Он не влиял на работу, но увеличивал размер кода.

08.07.2023

Добавлена встроенная константа ?PI типа FLOAT(53), равная 3.1415926….

07.04.2023

Из-за помарки в компиляторе для нескольких одинаковых констант длиной 4 байта создавалось несколько копий вместо одного единственного экземпляра.

04.04.2023

Устранена ошибка в выдаче протокола компиляции, из-за которой LINT-KT могла проверять не все межмодульные связи.

04.03.2023

Исправления в дизассемблере встроенного отладчика, который неправильно показывал некоторые команды SSE2. Кроме этого, директива отладчика ZS теперь показывает не 8, а все 16 регистров XMM.

28.01.2023

Небольшая доработка, позволяющая выделять одним оператором allocate кусок более 2 Гбайт. В результате можно создавать массивы с числом элементов более, чем 2**31. Правда в этом случае нельзя контролировать индекс вне границ, пример обработки массива (предполагается, что на компьютере 32 Гбайта ОЗУ):

test:proc main;

dcl
?memory fixed(31) ext init(35_000_000), // заказали 2**35 байт (34 359 738 358)
p …………..ptr,
i…………….fixed(63),
x(1:100).. fixed(63) based(p);.………………..// фиктивный размер массива

i=2**32*8;.……………………………………………// реальный размер массива 2**32
allocate(i) set(p);.…………………………………..// выделили память для массива

do i=1 to 2**32; x(i)=i; end i;.…………………// тестовое заполнение массива

end test;

08.12.2022

Устранено несколько мелких, но неприятных ошибок в компиляторе, связанных с добавлением проверок на переполнение.

03.09.2022

Устранена ошибка в компиляторе, остававшаяся незамеченной с апреля, в результате которой мог генерироваться неправильный код.

23.07.2022

Продолжение оптимизация кода. Контроль переполнения при переходе от числовой переменной большего размера к меньшей. См. статью

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;

0

Автор публикации

не в сети 2 дня

admin

3
Комментарии: 28Публикации: 173Регистрация: 13-06-2019
Авторизация
*
*

один × два =

Регистрация
*
*
*

семь + семь =

Генерация пароля

5 − 5 =

Перевести »
Прокрутить вверх
Scroll to Top