Size: a a a

Compiler Development

2021 January 07

DP

Defragmented Panda in Compiler Development
Vladimir Kazanov
Нативный или байткод?
интересны оба варианта
источник

VK

Vladimir Kazanov in Compiler Development
Defragmented Panda
интересны оба варианта
Нативный можно виртуализовать на уровне процессора. Байткод выполняется вашим кодом, легко можно проверить адрес
источник

DP

Defragmented Panda in Compiler Development
Vladimir Kazanov
Нативный можно виртуализовать на уровне процессора. Байткод выполняется вашим кодом, легко можно проверить адрес
виртуализировать на уровне процессора - предполагается крутой процессор который это умеет?

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

VK

Vladimir Kazanov in Compiler Development
Defragmented Panda
виртуализировать на уровне процессора - предполагается крутой процессор который это умеет?

как можно проверить все варианты зацикливания? оно может быть спрятано в куче условий и переходов внутри кода
В Интелах это есть :-)
источник

VK

Vladimir Kazanov in Compiler Development
Но нужен доступ уровня ядра ОС
источник

DP

Defragmented Panda in Compiler Development
мне интересен вариант без встроенного функционала процессора
источник

VK

Vladimir Kazanov in Compiler Development
Я не серьезно говорю, если что. Вы не можете по коду в общем случае убедиться, что он не нагенерит ничего вредного. Тьюринг считает, что для этого код надо исполнить.
источник

DP

Defragmented Panda in Compiler Development
Vladimir Kazanov
Я не серьезно говорю, если что. Вы не можете по коду в общем случае убедиться, что он не нагенерит ничего вредного. Тьюринг считает, что для этого код надо исполнить.
но мы можем взять минимальный набор команд и убедиться что из них нельзя сделать плохой код?

например вместо записи в ячейку Х вызывать функцию которая делает проверку диапазона и только потом пишет

вместо прыжка к Х мы прыгаем в функцию которая проверяет что время еще осталось достаточно на исполнение и тогда прыгаем к Х (и еще диапазон проверяем)
источник

DP

Defragmented Panda in Compiler Development
без возможности прыжков код ограничен временем исполнения в свою длину умножить на макс время одной операции
источник

K

Kir in Compiler Development
JohnByte
Если не было то как, интересно управление памятью выглядело
Как код завершался, память освобождалась. Зачем GC, если задача стоит слазить в базу и сделать HTML-страницу?
источник

VK

Vladimir Kazanov in Compiler Development
Defragmented Panda
но мы можем взять минимальный набор команд и убедиться что из них нельзя сделать плохой код?

например вместо записи в ячейку Х вызывать функцию которая делает проверку диапазона и только потом пишет

вместо прыжка к Х мы прыгаем в функцию которая проверяет что время еще осталось достаточно на исполнение и тогда прыгаем к Х (и еще диапазон проверяем)
Если вы выбираете минимальный набор команд,  то есть сами пишете интерпретатор, то что мешает целевой адрес проверять на лету, когда приходит команда?
источник

DP

Defragmented Panda in Compiler Development
Vladimir Kazanov
Если вы выбираете минимальный набор команд,  то есть сами пишете интерпретатор, то что мешает целевой адрес проверять на лету, когда приходит команда?
я могу упустить бесконечный цикл

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

т.е. проверка прыжка до исполнения может ловить только простые варианты типа прыжок на себя же
источник

BD

Berkus Decker in Compiler Development
MrSmith
Можно, просто нужен интерпретатор или джит
ну теоретикам можно, а у практиков на ART внезапно появились реальные ограничения
источник

BD

Berkus Decker in Compiler Development
потому что добро пожаловать в  реальнiй мiр
источник

M

MrSmith in Compiler Development
Berkus Decker
ну теоретикам можно, а у практиков на ART внезапно появились реальные ограничения
Что такое art?
источник

BD

Berkus Decker in Compiler Development
MrSmith
Что такое art?
android runtime
источник

M

MrSmith in Compiler Development
Наверное у них теории не было, протобаф тоже ужасен и ничего. Не все что делают большие компании исходя из коммерческой необходимости выходит хорошим
источник

Т8

Т-34 85 in Compiler Development
MrSmith
Наверное у них теории не было, протобаф тоже ужасен и ничего. Не все что делают большие компании исходя из коммерческой необходимости выходит хорошим
как там СмитПилятор поживает, пилится?
источник

M

MrSmith in Compiler Development
@GabrielFallen тригерит
источник

BD

Berkus Decker in Compiler Development
MrSmith
Наверное у них теории не было, протобаф тоже ужасен и ничего. Не все что делают большие компании исходя из коммерческой необходимости выходит хорошим
Я уверен если бы ты делал  андроид, вышло бы гораздо лучше.
источник