sti ; разрешить прерывания
popfd ; восстановить EFLAGS
iret ; возврат из прерывания
Эпилог обработчика прерывания немного избыточен и даже некорректен: во-первых, при входе в прерывание флаги уже на стеке, и ещё раз пушить их нет смысла. Во-вторых, команда iret обеспечивает атомарную операцию, в которой восстанавливаются флаги и осуществляется длинный переход на сохранённый адрес возврата.
У Вас же получается разрешение прерывания до выхода из обработчика, что приводит к тому, что другой обработчик может вытеснить выполнение сразу после инструкции sti. Далее, popf всё равно восстановит флаг прерываний, ранее сохранённый, поэтому операция sti перед popf тут избыточна.
// Exception с InnerException, и AggregateException с InnerExceptions есть из коробки
// по этому поводу допустим..
public class EInOutError : Exception
{
public required int ErrorCode { get; init; }
}
try
{
DoSomething();
}
catch (Exception ex) when (ex.HasErrorCode(200) is {} e)
{
// Handle e
}
Для поддержки нужен один мелкий хелпер, который иерархию развернёт в плоскую коллекцию:
Текст хелпера
public static class ExceptionExtension
{
public static EInOutError? HasErrorCode(this Exception e, int code)
{
return e.WithNested().OfType<EInOutError>().FirstOrDefault(x => x.ErrorCode == code);
}
public static IEnumerable<Exception> WithNested(this Exception e)
{
yield return e;
if (e is AggregateException { InnerExceptions: { Count: > 0 } innerExceptions })
{
foreach (var x in innerExceptions)
{
yield return x;
}
}
if (e.InnerException is { } inner)
{
yield return inner;
}
}
}
Да не надо ничего опровергать. Современное состояние физики указывает на то, что надо обобщение, но форма этого обобщения ещё не обнаружена (и не факт что будет обнаружена, хотя хотелось бы надеяться на позитивный исход). И мнение учёного, жившего в контексте науки середины прошлого века, погружённого в контекст тех времён, тоже нет смысла опровергать.
Не опровержение, ведь КМ и ОТО являются частными случаями более общей теории, до которой физика ещё не добралась. Так же как теория тяготения Ньютона является предельным случаем ОТО для случая слабых полей и малых скоростей (что эквивалентно бесконечной скорости света в знаменателе). Отсюда и страх Ньютона о том, что он получил дальнодействующую теорию.
О, мания величия собственной персоной с двух ног ворвалась в чатик.
Я о ней и говорю.
Я про текст в статье.
Всё ещё нет
Кажется, одна ось с персистентной памятью уже была в истории.
Не везде исправили.
Перед iret не нужны ни popf (и pushf в прологе), ни sti.
Будем считать это корректным, но ad-hoc решением.
Строго говоря, char не обязательно знаковый и -1 может не быть в диапазоне допустимых значений.
Кроме алфавита есть ещё раскладка, состояние shift и caps lock и ещё немножко всякое разное.
Эпилог обработчика прерывания немного избыточен и даже некорректен: во-первых, при входе в прерывание флаги уже на стеке, и ещё раз пушить их нет смысла. Во-вторых, команда iret обеспечивает атомарную операцию, в которой восстанавливаются флаги и осуществляется длинный переход на сохранённый адрес возврата.
У Вас же получается разрешение прерывания до выхода из обработчика, что приводит к тому, что другой обработчик может вытеснить выполнение сразу после инструкции sti. Далее, popf всё равно восстановит флаг прерываний, ранее сохранённый, поэтому операция sti перед popf тут избыточна.
Для поддержки нужен один мелкий хелпер, который иерархию развернёт в плоскую коллекцию:
Текст хелпера
И совсем недалеко до switch expression осталось. А там, глядишь, и нормальный pattern matching завезут.
Развиваем идею:
Ждём оператор ?. следующие десять лет.
Да не надо ничего опровергать. Современное состояние физики указывает на то, что надо обобщение, но форма этого обобщения ещё не обнаружена (и не факт что будет обнаружена, хотя хотелось бы надеяться на позитивный исход). И мнение учёного, жившего в контексте науки середины прошлого века, погружённого в контекст тех времён, тоже нет смысла опровергать.
Или мю-мезон
Не опровержение, ведь КМ и ОТО являются частными случаями более общей теории, до которой физика ещё не добралась. Так же как теория тяготения Ньютона является предельным случаем ОТО для случая слабых полей и малых скоростей (что эквивалентно бесконечной скорости света в знаменателе). Отсюда и страх Ньютона о том, что он получил дальнодействующую теорию.
Экономика последних фантазий выглядит нереалистичной
Жёсткие - тоже. Но другие.
Скорее всего здесь было упрощение исходного компонента при портировании.