Size: a a a

2021 May 01

KR

Kai Ren in rust_offtopic
Хороших снов)
источник

EG

Emmanuel Goldstein in rust_offtopic
Спасиб
источник

B

Börgar in rust_offtopic
споки
источник

X

XÆA-XII in rust_offtopic
источник

KR

Kai Ren in rust_offtopic
Как царюшка сказал
источник

KR

Kai Ren in rust_offtopic
А, стоп...
источник

r

red75prime in rust_offtopic
Не программист для UB, а UB для программиста. хех. Языки делаются, чтобы что-то работало, а не чтобы реализовать абстрактные концепции. Линус прав: если для работы с железом что-то нужно, но стандарт языка говорит что это - UB, то стандарт идёт лесом.
источник

r

red75prime in rust_offtopic
Впрочем, можно просто определить области отображаемых на память регистров как всегда аллоцированные объекты. В результате компилятор обязан будет генерировать чтение по адресу, так как на некоторых платформах это будет не UB.
источник

EG

Emmanuel Goldstein in rust_offtopic
Нельзя. Аллоцированный объект можно передать в функцию free()
источник

EG

Emmanuel Goldstein in rust_offtopic
В том-то и проблема, что семантика такого указателя непонятная
источник

r

red75prime in rust_offtopic
Ну а всегда аллоцированный объект, очевидно, нельзя передать в функцию free. Семантика простая - чтение по адресу памяти (как определено в memory model)
источник

EG

Emmanuel Goldstein in rust_offtopic
У объектов в си есть времена жизни
источник

EG

Emmanuel Goldstein in rust_offtopic
Время жизни либо привязано к идентификатору, либо динамическое.
источник

EG

Emmanuel Goldstein in rust_offtopic
Если оно динамическое, то объект можно передать в free().
источник

EG

Emmanuel Goldstein in rust_offtopic
Если оно привязано к идентификатору, то где этот идентификатор.
источник

r

red75prime in rust_offtopic
Если стандарт не натягивается на глобус, то дополняем стандарт, а не выкидываем глобус. Считаем, что есть неявные идентификаторы (зависимые от платформы).
источник

EG

Emmanuel Goldstein in rust_offtopic
Красивым решением тут было бы что-то вроде
#[at = 0x1337]
static Foobar foobar;
источник

EG

Emmanuel Goldstein in rust_offtopic
Тогда всё понятно — у нас статическое время жизни, привязанное к идентификатору foobar.
источник

EG

Emmanuel Goldstein in rust_offtopic
Тут ещё не понятно, в чьей ответственности лежит «перечислить эти идентификаторы»
источник

EG

Emmanuel Goldstein in rust_offtopic
По хорошему — в ответственности авторов компилятора, потому что платформа ни в чём уверена быть не может.
По факту это делает только платформа.
источник