Size: a a a

Compiler Development

2019 September 29

AT

Alexander Tchitchigin in Compiler Development
Peter Sovietov
Я в одном своем проекте выполняю код прямо на уровне виртуальной SoN-машины.
Понятно, что это можно делать. Но это можно делать, по сути, любым способом (как вырожденный случай, просто не делать ничего) - и нельзя сказать, правильный этот способ или неправильный, потому что у самой модели sea-of-nodes вычислительной семантики нет - не с чем сравнивать.
Типа, "просто выолнять инструкции, которые записаны в узлах" - это НЕ вычислительная семантика. По крайней мере, не той модели. 😊
источник

PS

Peter Sovietov in Compiler Development
Alexander Tchitchigin
Понятно, что это можно делать. Но это можно делать, по сути, любым способом (как вырожденный случай, просто не делать ничего) - и нельзя сказать, правильный этот способ или неправильный, потому что у самой модели sea-of-nodes вычислительной семантики нет - не с чем сравнивать.
Типа, "просто выолнять инструкции, которые записаны в узлах" - это НЕ вычислительная семантика. По крайней мере, не той модели. 😊
Тут лучше смотреть не на мои неформальные сообщения из чата, а на статью по ссылке, где все требуемое, кажется, присутствует :)
источник

PS

Peter Sovietov in Compiler Development
По сути модель SoN компилятором специализируется до конкретной выч. архитектуры. Поэтому, конечно же, выч. семантика у SoN присутствует. Можно даже достаточно легко представить себе аппаратную реализацию — процессор SoN. Это не будет сильно сложнее реальных dataflow-машин.
источник

AT

Alexander Tchitchigin in Compiler Development
Peter Sovietov
По сути модель SoN компилятором специализируется до конкретной выч. архитектуры. Поэтому, конечно же, выч. семантика у SoN присутствует. Можно даже достаточно легко представить себе аппаратную реализацию — процессор SoN. Это не будет сильно сложнее реальных dataflow-машин.
Вы путаете вычислительную семантику модели и её реализации.
источник

PS

Peter Sovietov in Compiler Development
Я говорю о том, что SoN-модель и сама по себе может быть буквальной реализацией — то есть реальным процессором. Просто это сильно непрактичная реализация.
источник

M

MaxGraey in Compiler Development
источник

AT

Alexander Tchitchigin in Compiler Development
Peter Sovietov
Я говорю о том, что SoN-модель и сама по себе может быть буквальной реализацией — то есть реальным процессором. Просто это сильно непрактичная реализация.
Не может. К ней нужно фактические инструкции добавлять.
источник

PS

Peter Sovietov in Compiler Development
Alexander Tchitchigin
Не может. К ней нужно фактические инструкции добавлять.
А они там есть: Phi, Block и проч. Просто арифметические, например, инструкции не специфицируются, потому что у каждого процессора свой набор.
источник

AT

Alexander Tchitchigin in Compiler Development
Peter Sovietov
А они там есть: Phi, Block и проч. Просто арифметические, например, инструкции не специфицируются, потому что у каждого процессора свой набор.
И где продемонстрировано, как закодировать хотя бы натуральную арифметику на "голом" sea-of-nodes с Phi и Block, но без "поцессорных" (или ВМ) инструкций?
А то для "голого" лямбда-исчисления этот вопрос давно закрыт (кодировки Чёрча, Бома-Берардуччи и ещё парочка).
источник

PS

Peter Sovietov in Compiler Development
Alexander Tchitchigin
И где продемонстрировано, как закодировать хотя бы натуральную арифметику на "голом" sea-of-nodes с Phi и Block, но без "поцессорных" (или ВМ) инструкций?
А то для "голого" лямбда-исчисления этот вопрос давно закрыт (кодировки Чёрча, Бома-Берардуччи и ещё парочка).
На самом деле, я уже пользу извлек из нашего диалога :) Сейчас присмотрелся к статье и увидел, что на так уж здорово там формализовано SoN. По поводу M-зависимостей вообще ничего не сказано. И выработать некий "канонический" минимальный полный по Тьюрингу набор операций не мешало бы. Вот Вам и разрыв между академиками и практиками-компиляторщиками. :)
источник

AT

Alexander Tchitchigin in Compiler Development
Peter Sovietov
На самом деле, я уже пользу извлек из нашего диалога :) Сейчас присмотрелся к статье и увидел, что на так уж здорово там формализовано SoN. По поводу M-зависимостей вообще ничего не сказано. И выработать некий "канонический" минимальный полный по Тьюрингу набор операций не мешало бы. Вот Вам и разрыв между академиками и практиками-компиляторщиками. :)
Рад быть полезным! 😃
источник

PS

Peter Sovietov in Compiler Development
Alexander Tchitchigin
Рад быть полезным! 😃
Спасибо! Может, займетесь? :) А то от компиляторщиков ждать не приходится формализации :)
источник

AT

Alexander Tchitchigin in Compiler Development
Peter Sovietov
Спасибо! Может, займетесь? :) А то от компиляторщиков ждать не приходится формализации :)
Не, не займусь... 😂
источник

SS

Sergey Sverdlov in Compiler Development
Timur Safin
помню в оригинальном ТурбоПаскале была прагма для включения range-check вроде {$R+} называлась. Надо такое же принести
{$R+} - это для контроля индексов. А для переполнения целых {$Q+}. И кажется, это не приводило к драматичному снижению производительности.
источник

TS

Timur Safin in Compiler Development
Наверно, потому что там был настолько неэффективный генератор, проносящий все через аккумулятор, что лишний  вызов bound погоды не делал :)
источник

M

MaxGraey in Compiler Development
Timur Safin
Наверно, потому что там был настолько неэффективный генератор, проносящий все через аккумулятор, что лишний  вызов bound погоды не делал :)
Вообще bound checking легко выноситься на пределы цикла после CFG анализа (Array bounds check elimination)
источник

M

MaxGraey in Compiler Development
арифметика со слежением на переполнения так же это одна инструкция + 1 jump
add     %esi, %edi
jo      <handle_overflow>
источник

А

Алексей in Compiler Development
Alexander Tchitchigin
Ага. В React теперь тоже. 😃
Хуки в реакте - это само воплощение мутабельного состояния, да ещё и скрытого к тому же. Да и ООП в реакте толком никогда не юзалось на полную катушку.
источник

AT

Alexander Tchitchigin in Compiler Development
Алексей
Хуки в реакте - это само воплощение мутабельного состояния, да ещё и скрытого к тому же. Да и ООП в реакте толком никогда не юзалось на полную катушку.
> Хуки в реакте - это само воплощение мутабельного состояния, да ещё и скрытого к тому же.

Ну, я так не считаю. Во всяком случае, не более, чем "State monad - это само воплощение мутабельного состояния, да ещё и скрытого к тому же." 🤷‍♀️
источник

А

Алексей in Compiler Development
Alexander Tchitchigin
> Хуки в реакте - это само воплощение мутабельного состояния, да ещё и скрытого к тому же.

Ну, я так не считаю. Во всяком случае, не более, чем "State monad - это само воплощение мутабельного состояния, да ещё и скрытого к тому же." 🤷‍♀️
Там нет State monad. Там монад и нет никаких в чистом виде.
источник