Statistics: Posted by Shaos — 18 Mar 2024 10:21
Shaos wrote: По просьбе Axora вспомнил и запрограммировал алгоритм генерации скал для газеты Абзац: | ||
Statistics: Posted by Alikberov — 18 Mar 2024 09:16
imsushka wrote: деление на ноль - это crt.tpu ошибка была. | ||
imsushka wrote: отладка в досе или в эмуляторе ? | ||
imsushka wrote: пошаговая отладка (если в TD) не ловит трюки с изменением кода и с кешем команд. | ||
imsushka wrote: только запуск до метки причем, если до метки допрыгнули, то ставим след метку, сбрасываем прогу и стартуем от начала | ||
Statistics: Posted by Lavr — 16 Mar 2024 18:02
Statistics: Posted by imsushka — 16 Mar 2024 12:52
imsushka wrote: перенеси кусок после 0f 05 в конец проги забей нопами байт 16, а потом джамп на перенесенный блок | ||
Statistics: Posted by Lavr — 16 Mar 2024 11:29
Statistics: Posted by imsushka — 16 Mar 2024 11:13
imsushka wrote: loadall был вроде только в 286 так что на атоме может и вызывать исключение | ||
Statistics: Posted by Lavr — 16 Mar 2024 09:27
Statistics: Posted by imsushka — 16 Mar 2024 09:05
Lavr wrote: В новом ноуте при загрузке в DOS под НЕ UEFI BIOS запуск некоторых старых программ вызывает: Machine Check Error - да-да... вот такой - как в режиме видео 13.
| |||||||||||
Quote: INT 00H Деление на 0 INT 01H Пошаговое прерывание INT 02H Немаскируемое прерывание INT 03H Точка прерывания в отладке. INT 04H Переполнение INT 05H Печать экрана отменили с 286-го / (CPU BOUND Exception Interrupt) INT 06H (Invalid Opcode) Неверный код операции, начиная с 286-го INT 07H (Math Coprocessor Not Present) Математический сопроцессор отсутствует | ||
Quote: INT 08H — ошибка #DF «Двойная ошибка» INT 0AH — ошибка #TS «Ошибочный TSS» INT 0Bh — ошибка #NP «Сегмент недоступен» INT 0Ch — ошибка #SS «Ошибка стека» INT 0Dh — исключение #GP «Общая ошибка защиты» INT 0Eh — ошибка #PE «Ошибка страничной адресации» INT 10h — ошибка #MF «Ошибка сопроцессора» INT 11h — ошибка #АС «Ошибка выравнивания» INT 12h — останов #МС «Машинно-зависимая ошибка» | ||
Statistics: Posted by Lavr — 16 Mar 2024 09:02
Statistics: Posted by FizikS — 14 Mar 2024 23:51
Statistics: Posted by shiny — 12 Mar 2024 05:34
Statistics: Posted by Shaos — 10 Mar 2024 21:42
Statistics: Posted by gurin2 — 08 Mar 2024 23:10
Lavr wrote: Но как имитировать тройную ошибку я совершенно не представляю. ... В общем уже чисто интересно стало, за что в BIOS отвечает фраза: Machine Check Error | ||
Quote: The 0F05H opcode will cause exception 13 in protected mode if executed when CPL is not 0. If 0F05H is executed in real address mode, or in protected mode when CPL=O, the 80286 stops normal execution. RESET must be used to restart the CPU in this case. The 0F05H opcode may be executed at any time in real address mode. | ||
Illegal.PNG | ||
Statistics: Posted by Lavr — 08 Mar 2024 17:20
Lavr wrote: В новом ноуте при загрузке в DOS под НЕ UEFI BIOS запуск некоторых старых программ вызывает: Machine Check Error - да-да... вот такой - как в режиме видео 13. | ||
Vic3Dexe wrote: Machine Check Exception - это исключение проца (такое же как #GP или #PF). И возникает оно безотносительно выполнения кода, так что отладчиком это ловить бесполезно. Это какие-то ошибки железа (контроллера памяти или кэша например), не более. Подозреваю, что биос этого ноута просто забывает его отключить, рассчитывая на то, что будет загружена винда, которая с ними разберется (или тоже выключит). Выключается путем снятия бита 6 в регистре CR4. Если надо - напишу код, но он тривиален. Проверьте, если не тот случай - будем искать дальше. Подробнее об MCE см. Intel Software Developer Manual, раздел 15. | ||
BiosErr.png | ||
Vic3Dexe wrote: Выключается путем снятия бита 6 в регистре CR4. Если надо - напишу код, но он тривиален. | ||
Code: MOV EAX,CR4 ; Прочитаем CR4 ; бит 6: бит МСЕ - разрешает исключение #МС NOP NOP AND AX,0BFh ; 10111111b - гасим бит 6 MOV CR4,EAX ; Запишем CR4 NOP NOP MOV EAX,CR4 ; Прочитаем CR4 для проверки NOP NOP | ||
Code: SUB ESP,6 ; выделить в стеке 6 байт для указателя на IDT MOV WORD PTR [ESP],0 ; предел = 0 MOV DWORD PTR [ESP+2],0 ; физический адрес начала IDT = 0 LIDT FWORD PTR [ESP] ; загрузить 32 бита базы и 16 битов предела в регистр MOV AX,-1 ; FFFF MOV SS,AX ; that should kill him! JMP $ ; бесконечный цикл | ||
Statistics: Posted by Lavr — 08 Mar 2024 12:26