Обсуждение:Эльбрус/lcc

Материал из ALT Linux Wiki

Little C Compiler

В некоторых проектах проверяют __LCC__, который другой lcc; Рамиль Саттаров пишет по этому поводу:

И это ещё повезёт, если LCC заботливо обернут сначала в ifdef WIN64
- тогда считай пронесло. Но часто - нет.

--mike (обсуждение) 08:04, 18 декабря 2020 (UTC)

Размер бинарного кода

Со слов Алексея Маркина:

У e2k код «рыхлый» потому что для оптимизации необходимо делать много подстановок функций,
а также иметь много версий одного цикла и много вариаций кода для предикатного режима
(if-conversion). Тем не менее, обычно в горячих участках код получается нормальным,
а «рыхлость» — это среднее по больнице.

Более того, раскрутка — далеко не единственный метод оптимизации цикла, если это возможно,
то к нему будет применена программная конвейеризация, которая обладает аппаратной поддержкой.
Это, разумеется, не взаимоисключающая с раскруткой оптимизация, и их часто следует применять
вместе, но размер кода она экономит сильно по сравнению с только раскруткой.

Компилятор довольно сильно заботится о размере кода. Так, например в режиме -O3 действует
специальная система СНОП, которая при возможности понижает линейку оптимизации для экономии
времени компиляции и размера. Но сам по себе -O3 подразумевает что размер кода не является
главной целью сборки.

--mike (обсуждение) 20:40, 18 декабря 2020 (UTC)

#pragma unroll(X)

Обновление системы программирования Эльбрус

lcc, lcc-libs, binutils, glibc, kernel, gdb, strace, audit, libffi — всё должно быть синхронно и обновляться [одним скопом]. Разъезды по версиям могут привести к поломкам, особенно при скачках между ветками. bircoph@

1.25 под ядром 4.9

Assembler messages: Error: literals cannot be packed into a wide command — просто в 1.25 в ассемблере стало возможно дублировать литералы-константы в ШК вместо явного указания, что это ссылка на значение, а не заполнение :) --Dmitry Shcherbakov ("вывод из опытов, не из документации")