|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.08.2017, 14:29 | #1 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
Прерывания.
Такой вопрос встал в ступор.
Что могут обрабатывать прерывания MSI , а что не могут? А что могут обрабатывать прерывания от контроллера APIC, а что не могут? |
25.08.2017, 15:01 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
|
25.08.2017, 15:12 | #3 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
Конечно, спасибо. Но это не даёт ответа на мой вопрос. А какие устройства поддерживаются.(К примеру клавиатура в MS Interrupts)
|
25.08.2017, 15:22 | #4 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Там исчерпывающий ответ. Если не поняли поясняю.
MSI это вид прерываний PCI. Их могут генерировать только PCI устройства. И то не все, а только те устройства которые это поддерживают. А приемником этих прерываний как раз и является APIC.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
25.08.2017, 15:57 | #5 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
То есть мне надо обрабатывать прерывания устройств (кроме PCI) , через таблицу IDT?
|
25.08.2017, 16:21 | #6 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Nikolay2015 У вас с Русским языком очень плохо. Трудно понять, то о чём вы думаете когда пишете.
Почему кроме? Всех.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
25.08.2017, 16:24 | #7 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
|
25.08.2017, 20:17 | #8 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
По поводу прерываний. У меня есть обработчик #GP - прерывания.
При срабатывании данного прерывания я вызываю прерывание int 1-> отладка. В обработчике отладки вывожу строку. Код:
У меня происходит два случая (зависит от текста почему-то): 1. Сразу виртуальная машина кидает исключение и ничего не выводит Код:
2.1 Либо не кидает исключение и ничего не выводит Код:
|
25.08.2017, 21:22 | #9 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Nikolay2015
Скорее всего придел сегмента DS неверный. Кажите свою GDT. Выводиться звёздочку затем при попытке записать в cursor выходите за придел. Происходит двойная ошибка. Причем она у вас зацикливается, до тех пор пока весь стек не исчерпается, затем срабатывает тройная ошибка и виртуалка перезагружается. Я всегда DS настраиваю на корректный и после уже работаю. При приходе исключения только стек является корректно настроенным( и то не всегда) Ещё у вас команда popad - не имеет пары. Тут это лишнее. У вас же внутреннее прерывание, а не внешнее(аппаратное). И код лучше отлаживать. Есть же удалённая отладка через gdb или же через bochs
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 25.08.2017 в 21:28. |
25.08.2017, 21:30 | #10 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
Дескриптор данных
Код:
Код:
Последний раз редактировалось Nikolay2015; 25.08.2017 в 21:33. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Прерывания | kolyan147 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 13.06.2012 23:55 |
прерывания | lilek | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 14.12.2010 20:44 |
Прерывания | alexdrew | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 16.05.2010 00:38 |
Прерывания | Kn793 | Общие вопросы Delphi | 3 | 10.01.2009 18:43 |