Маjко
И пони ходят с транспарантами "мы за стабильный софт"
Sherzod
и прошивка процессора на расте ❤️
Anonymous
и HLLCA на основе Rust
A64m
в чем кликбейтовость?
ну по тому что в раст-чате можно догадаться но вообще "Hey, this is kyren from Chucklefish, we make and publish..." т.е. много слов непонятно зачем, но когда уже дошел до первого слова по делу - БАХ! - читать дальше...
Alex
кстати
Маjко
не, тут ты загнул
Да нет, не загнул.
Старые API могли оставить, но заменить заглушкой, которая тесты проходит, но целиком не совместима по багам
Alex
у проца какая то прошивка есть? я думал там на своем языке его архитектура пишется и это голое железо
Alex
а, ну там микрокод патчить можно, но я не оч понимаю как это работает
Маjко
Там проц в проце
Маjко
Проц исполняет микрокод
Маjко
Микрокод исполняет твой код
Alex
как тогда патчинг микрокода происходит?
Маjко
При загрузке ОС
Маjко
В линуксах подгружается как отдельный образ initrd
Маjко
В виндах отдельный драйвер для обновления микрокода
Маjко
Но можно кстати и во время работы руками пропатчить
Маjко
Но тут я хз применятся ли изменения до перезагрузки
Alex
а
Alex
т.е ось на лету патчит экзешники?
Маjко
?
Alex
ну как оно работает
Sherzod
Alex
у нас есть память
Alex
и там есть микрокод
Alex
и микрокод передает управление микрокоду по сути
Маjко
Не экзешники, просто загружает в проц специальной процовой апишкой образ микрокода
Alex
*машинный код
Alex
а, процовая апишка, оке.
Маjко
Ну то есть интел грубо говоря предоставляет проприетарный образ
Маjко
Который запускается процом
Маjко
И как-то загружает в него новый микрокод
Маjко
Я не возьмусь утверждать)
Alex
перед подачей на железо передается исправленный вариант. Но оно скорее всего довольно сложно устроено
Маjко
Я не знаю как интеловские процы обновляют свой микрокод
Маjко
И я думаю никто этого не знает
Маjко
Кроме инженеров Интела
Alex
интересно, а список инструкций так можно расширить?
Sherzod
mov eax, [edi + 4]
int 21h
> yadro propatcheno
Alex
чёт я написал работающий код но почему он работает не пойму :D
fn next_item<T: PartialEq<T> + Clone>(slice: &[T], find: T) -> Option<T> {
let mut iter = slice.into_iter();
iter.position(|&ref x| *x == find);
iter.next().map(|x| x.clone())
}
Маjко
Но опять же
Маjко
Хер его знает)
Sherzod
давайте сюда вики скопируем
Маjко
Они же вносят как-то фиксы при обнаружении CVE
Sherzod
и вместе прочитаем )
Маjко
Через микрокод
Маjко
Копируй
Alex
не, суть алгоритма то я разумею
Alex
я вторую строку не понимаю
Alex
шо такое &ref x
big
Alex
и почему нужно явно разыменовывать x, вроде ж оно автоматом подставлялось?
でゲソ
Filipp
в статье чел пишет
Filipp
думаешь врет?
big
big
но выглядит так что там что-то лишнее
big
там либо ref либо & ненужен, а скорее всего оба
Alex
потому что segfault сложнее дебажить
Alex
а паника это ошибка в логике.
Anonymous
でゲソ
Лол
Alex
Alex
паника это ошибка в логике работы программы.
でゲソ
А сегфолт это видимо ошибка в процессоре
big
Alex
просто все паники обрабатывать - слишком дорого
big
мб вы что-то другое имели ввиду?
Alex
хм, наверное я разыменование в конце влепил и оно с ним заработало
big
вот, разыменовывание там нужно вроде в любом случае, так как аргмент получается всегда &T.