Size: a a a

Compiler Development

2020 January 21

BD

Berkus Decker in Compiler Development
привет привет
источник

VY

Vasiliy Yorkin in Compiler Development
Berkus Decker
commute это перестановка насколько я понимаю, то есть “взаимозаменяемы"
Ну да, я это понимаю просто по аналогии с "коммутативность операции", т.е. можно перемещать (раз в statement нет "сайд-эффектов" влияющих на expression).
Например, вот такие s и e нельзя было было бы переместить:
   s := Move(Mem(x), y)
  e := BinOp(Plus, Mem(x), z)
Т.к. в таком случае e зависит от s, то порядок важен, следовательно они не commute
источник

BD

Berkus Decker in Compiler Development
Vasiliy Yorkin
Ну да, я это понимаю просто по аналогии с "коммутативность операции", т.е. можно перемещать (раз в statement нет "сайд-эффектов" влияющих на expression).
Например, вот такие s и e нельзя было было бы переместить:
   s := Move(Mem(x), y)
  e := BinOp(Plus, Mem(x), z)
Т.к. в таком случае e зависит от s, то порядок важен, следовательно они не commute
ага
источник

IJ

Igor 🐱 Jirkov in Compiler Development
Berkus Decker
commute это перестановка насколько я понимаю, то есть “взаимозаменяемы"
Не "взаимозаменяемы", а "можно посчитать в произвольном порядке"
источник

IJ

Igor 🐱 Jirkov in Compiler Development
думаю, это вы и хотели сказать, но так точнее
источник

IJ

Igor 🐱 Jirkov in Compiler Development
Vasiliy Yorkin
Интересно, тут "commute" значит "коммутируют" в том смысле, что s (некий потенциально side-effectful statement) можно выполнить до\после e? (стр. 175 tiger-book)
любые два "чистых" выражения A и B (например, const) можно посчитать в порядка A B или B A
источник

BD

Berkus Decker in Compiler Development
Igor 🐱 Jirkov
думаю, это вы и хотели сказать, но так точнее
спасибо
источник

VY

Vasiliy Yorkin in Compiler Development
Да, спасибо. Вроде стало понятно
источник

PD

Plomipu Dmitri in Compiler Development
народ, а если тут задавать вопросы о возможностей конкретного языка программирования - это будет тут оффтопик ??
источник
2020 January 22

BD

Berkus Decker in Compiler Development
смотря какие вопросы
источник

PD

Plomipu Dmitri in Compiler Development
Berkus Decker
смотря какие вопросы
если касается семантики и фич языка.
источник

BD

Berkus Decker in Compiler Development
Plomipu Dmitri
если касается семантики и фич языка.
ну обсудить можно, детали реализации и все такое
источник

МБ

Михаил Бахтерев in Compiler Development
Igor 🐱 Jirkov
любые два "чистых" выражения A и B (например, const) можно посчитать в порядка A B или B A
Подумалось: не всегда. Допустим, памяти у нас всего N байтов. Результат A занимает N/2, а для получения результата B размером N/100 нужен N/2+1 байт.
источник

IJ

Igor 🐱 Jirkov in Compiler Development
Михаил Бахтерев
Подумалось: не всегда. Допустим, памяти у нас всего N байтов. Результат A занимает N/2, а для получения результата B размером N/100 нужен N/2+1 байт.
На самом деле, конечно, всё сложнее, я согласен. Еще  приходит в память сложение  float'ов, которое не коммутативно, а также возможные переполнения в знаковый разряд.
источник

МБ

Михаил Бахтерев in Compiler Development
Igor 🐱 Jirkov
На самом деле, конечно, всё сложнее, я согласен. Еще  приходит в память сложение  float'ов, которое не коммутативно, а также возможные переполнения в знаковый разряд.
А как это нужно формализовывать?
источник

E

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

А

Алексей in Compiler Development
это норма? и что значит restrict?
источник

E

EgorBo in Compiler Development
Алексей
это норма? и что значит restrict?
ну это я имитировал алиас анализис, просто интересно было заменят ли С/С++ компиляторы меммув на мемкпу
источник

E

EgorBo in Compiler Development
вот гцц почему-то очканул
источник

E

EgorBo in Compiler Development
вернее гцц требует noalias у обоих указателей
источник