Alex
И API не меняется
не, тут ты загнул
Ма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ко
И как-то загружает в него новый микрокод
Alex
И как-то загружает в него новый микрокод
ну там скорее всего на лету инструкции патчатся просто
Ма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ко
Но опять же
Маjко
Хер его знает)
Sherzod
давайте сюда вики скопируем
Маjко
Они же вносят как-то фиксы при обнаружении CVE
Sherzod
и вместе прочитаем )
Маjко
Через микрокод
Маjко
Копируй
big
чёт я написал работающий код но почему он работает не пойму :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()) }
сначала: - slice превращается в Iterator iter - на iter применяется position: вызывает next(), проверяет на соответсвие возвращенного элемента критериям, при помощи функции-предиката. position при этом short-circuit-ится — при нахождении искомого элемента position возвращает результат (который кстати в данном случае не используется). При этом всем position не поглощает self, и итератор все еще имеет не поглощенные элементы которые можно достать при помощи next. - достается следующий элемент при помощи iter.next() и клонируется (если Some)
Alex
не, суть алгоритма то я разумею
Alex
я вторую строку не понимаю
Alex
шо такое &ref x
Alex
и почему нужно явно разыменовывать x, вроде ж оно автоматом подставлялось?
でゲソ
да еще и для консолей параллельно
А вот за соснольность не уверен. Там же есть ограничения
Filipp
в статье чел пишет
Filipp
думаешь врет?
でゲソ
как то маловероятно
Наоборот наиболее вероятно
big
но выглядит так что там что-то лишнее
big
там либо ref либо & ненужен, а скорее всего оба
でゲソ
в статье чел пишет
Я наискосок глянул. Целиком позже читать буду
Alex
Просто паникует
паника это лучше
Alex
потому что segfault сложнее дебажить
Alex
а паника это ошибка в логике.
Anonymous
でゲソ
Лол
Alex
там либо ref либо & ненужен, а скорее всего оба
без них ругается на скоропостижную смерть референса
Alex
паника это ошибка в логике работы программы.
でゲソ
А сегфолт это видимо ошибка в процессоре
Alex
просто все паники обрабатывать - слишком дорого
Alex
А сегфолт это видимо ошибка в процессоре
тоже ошибка в работе программы. Только более низкоуровневая.
big
без них ругается на скоропостижную смерть референса
хм, странно, вроде нет https://play.rust-lang.org/?gist=6dc0c7631baf18211d16628c28c3edd6&version=stable
big
мб вы что-то другое имели ввиду?
Alex
хм, наверное я разыменование в конце влепил и оно с ним заработало
big
вот, разыменовывание там нужно вроде в любом случае, так как аргмент получается всегда &T.