25.11.1997 Новости С Чего все началось? А началось все с того, что Сергей Штылев (FIDO Net 2:5020/157.59) в эхо-конференции TALKS.ASM поместил сообщение о возможной ошибке в процессоре 6x86 фирмы Cyrix и привел соответствующий код для ее демонстрации. В этом же сообщении говорилось, что указанный код корректно обрабатывался на Intel Pentium. Особого резонанса это тогда не вызвало, поскольку затронутая проблема не показалась достаточно серьезной. У меня же возникло желание разобраться с ней детально, чтобы самому оценить ее важность. Результат изысканий явно превзошел ожидания и, кроме того, заставил по-новому взглянуть на всю существующую индустрию производства микропроцессоров, что и побудило меня написать этот материал. Итак, для начала приведу искомый код, на котором легко проверить наличие ошибки (можно назвать ее XCHG BUG или “hidden CLI bug”) : model tiny code org 100h start: sti ;разрешим внешние ;прерывания mov bx,80h ;адрес любой ;корректной ссылки на ;память jmp again ;содержимое ;IP должно быть ;больше 11Fh org 120h again: xchg ax,[bx] ;прямая или ;косвенная ссылка ;обязательна mov cx,ax ;использова;ние того же регист;ра обязательно jmp again ;зацикливаем ;последовательность ;команд end start Выполнение цикла в конце программы приведет к тому же результату, как и в случае выполнения внутри цикла дополнительной команды CLI, (запрещающей внешние прерывания.) Таким ...
читать далее.