Size: a a a

Compiler Development

2021 January 07

AK

Andrei Kurosh in Compiler Development
Я настоятельно прошу все отношения дальше выяснять в личках, если очень захочется
источник

AS

Anatoly Shirokov in Compiler Development
MrSmith
Короче мне надоело, прекращайте хамить мужикам под 40 меряются с 23 летним
В русскоязычных чатах знания с кулаками, да. Все зависит от твоего целеполагания.
источник

AK

Andrei Kurosh in Compiler Development
Возвращаемся к теме чата
источник

M

MaxGraey in Compiler Development
Так, давайте все успокоимся. Почему в русскоязычном комьюнити вечно срачи какие то! Пока сюда не забрел царь все было в меру спокойно и прилично. Тех, кто хотел расширять свое и чужое сознание и вести всякого рода дискусы был создан специальный чат PLD. Но хамство не приемлемо и там. Поэтому попрощу держать себя в рамках приличия и относиться к собеседнику (оппоненту) с уважением, даже если он 100 раз не прав.
источник

DP

Dmitry Ponyatov in Compiler Development
Defragmented Panda
как можно делать песочницу для кода?

например, берем плохой код котооый содержит прыжок к далекой памяти за пределами кода или прыжок на себя же для бесконечного цикла.

как можно написать код-песочницу который гарантирует что плохой код будет обработан и завершиться через конечное время? (например 1000 инструкций). и что он не изменит память вне песочницы
кстати, вспомнилась одна малоизвестная сейчас область, для которой задавались подобные вопросы: языки и компиляторы для создания игр на бытовых микрокомпььютерах 80х: i8080, 16-32К ОЗУ, и полное отсутствие внешней быстрой памяти.
даже компактности асма не хватало, изобретали всякие схемы кодирования, в т.ч. свертки кода, чтобы уместить и логику, и уровни, и спрайты, и не ждать потом 20 минут, пока с кассеты zx chess загрузится
источник

IK

Ivan Kochurkin in Compiler Development
MrSmith
И это повод переходить на личность? Ещё раз тут есть пара человек которых я бы с большим желанием назвал тупыми шизойдными собаками. Но я же не делаю этого, потому что нахожусь в обществе в котором так не принято, но почему то в мою сторону эти правила постоянно пропускаются
Тупые шизоидные собаки это скорее оксюморон, потому что они как раз в основном умные и взвешенные, по крайней мере в своей сфере.
источник

BD

Berkus Decker in Compiler Development
Dmitry Ponyatov
кстати, вспомнилась одна малоизвестная сейчас область, для которой задавались подобные вопросы: языки и компиляторы для создания игр на бытовых микрокомпььютерах 80х: i8080, 16-32К ОЗУ, и полное отсутствие внешней быстрой памяти.
даже компактности асма не хватало, изобретали всякие схемы кодирования, в т.ч. свертки кода, чтобы уместить и логику, и уровни, и спрайты, и не ждать потом 20 минут, пока с кассеты zx chess загрузится
но это ж не про песочницу
источник
2021 January 08

Т8

Т-34 85 in Compiler Development
есть ли в gcc слой middle IR? И если есть, то когда он появился, когда работы по его внедрению начались?
источник

BD

Berkus Decker in Compiler Development
Т-34 85
есть ли в gcc слой middle IR? И если есть, то когда он появился, когда работы по его внедрению начались?
GIMPLE/GENERIC или как он там называется
источник

BD

Berkus Decker in Compiler Development
источник

BD

Berkus Decker in Compiler Development
появился давно
источник

BD

Berkus Decker in Compiler Development
https://gcc.gnu.org/onlinedocs/gccint/RTL.html#RTL есть еще RTL, Tree SSA, GENERIC
источник

BD

Berkus Decker in Compiler Development
в гцц много IR
источник

Т8

Т-34 85 in Compiler Development
о, спасибо, удалось даже найти в доке релиза 2002 года
источник

LA

Liber Azerate in Compiler Development
Т-34 85
есть ли в gcc слой middle IR? И если есть, то когда он появился, когда работы по его внедрению начались?
Если вопрос про MIR, то это RTL на виртуальных регистрах и он очень давно. А если про GIMPLE, то он появился в gcc 3.1
источник

Т8

Т-34 85 in Compiler Development
спс
источник

К

Константин in Compiler Development
Defragmented Panda
я могу упустить бесконечный цикл

если прыжок в условии там в одной из ветвей прыжок к бесконечному циклу, например

т.е. проверка прыжка до исполнения может ловить только простые варианты типа прыжок на себя же
Делать каунтер переходов + время, и дропать при выпадении за количество переходов в цикле и время этого цикла.
Но все равно надо запустить, так как там может быть сложный выход который ты никак не проверишь статически.
источник

DP

Dmitry Ponyatov in Compiler Development
Константин
Делать каунтер переходов + время, и дропать при выпадении за количество переходов в цикле и время этого цикла.
Но все равно надо запустить, так как там может быть сложный выход который ты никак не проверишь статически.
можно софтовый watchdog использовать — мочить/рестартовать процесс, если он в нужных местах не выполнил команду wdt (внутри/вокруг цикла).
на МК бывает аппаратный, с NMI-прерыванием
источник

К

Константин in Compiler Development
Сначала цикл нужно узнать.
Это тоже самое по факту получается.
Я тупо по всем джампам делаю энкаунтер и проверку (самое простое решение).
Ну да, можно так же вотчеров напихать.


У меня правда было сложнее, был бесконечный фор и ещё рекурсия после.
Лан, рекурсия по стеку может упасть (и то не факт, если хвостовая), с фором бяда.
источник

DP

Dmitry Ponyatov in Compiler Development
Константин
Сначала цикл нужно узнать.
Это тоже самое по факту получается.
Я тупо по всем джампам делаю энкаунтер и проверку (самое простое решение).
Ну да, можно так же вотчеров напихать.


У меня правда было сложнее, был бесконечный фор и ещё рекурсия после.
Лан, рекурсия по стеку может упасть (и то не факт, если хвостовая), с фором бяда.
есть РТОС, TTL для процесса, и аппаратные таймеры
источник