![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
![]()
Такой вопрос встал в ступор.
Что могут обрабатывать прерывания MSI , а что не могут? А что могут обрабатывать прерывания от контроллера APIC, а что не могут? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,370
|
![]() |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
![]()
Конечно, спасибо. Но это не даёт ответа на мой вопрос. А какие устройства поддерживаются.(К примеру клавиатура в MS Interrupts)
|
![]() |
![]() |
![]() |
#4 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
Там исчерпывающий ответ. Если не поняли поясняю.
MSI это вид прерываний PCI. Их могут генерировать только PCI устройства. И то не все, а только те устройства которые это поддерживают. А приемником этих прерываний как раз и является APIC.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
![]()
То есть мне надо обрабатывать прерывания устройств (кроме PCI) , через таблицу IDT?
|
![]() |
![]() |
![]() |
#6 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
Nikolay2015 У вас с Русским языком очень плохо. Трудно понять, то о чём вы думаете когда пишете.
Почему кроме? Всех.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
![]() |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 23.08.2017
Сообщений: 59
|
![]()
По поводу прерываний. У меня есть обработчик #GP - прерывания.
При срабатывании данного прерывания я вызываю прерывание int 1-> отладка. В обработчике отладки вывожу строку. Код:
У меня происходит два случая (зависит от текста почему-то): 1. Сразу виртуальная машина кидает исключение и ничего не выводит Код:
2.1 Либо не кидает исключение и ничего не выводит Код:
|
![]() |
![]() |
![]() |
#9 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
Nikolay2015
Скорее всего придел сегмента DS неверный. Кажите свою GDT. Выводиться звёздочку затем при попытке записать в cursor выходите за придел. Происходит двойная ошибка. Причем она у вас зацикливается, до тех пор пока весь стек не исчерпается, затем срабатывает тройная ошибка и виртуалка перезагружается. Я всегда DS настраиваю на корректный и после уже работаю. При приходе исключения только стек является корректно настроенным( и то не всегда) Ещё у вас команда popad - не имеет пары. Тут это лишнее. У вас же внутреннее прерывание, а не внешнее(аппаратное). И код лучше отлаживать. Есть же удалённая отладка через gdb или же через bochs
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 25.08.2017 в 21:28. |
![]() |
![]() |
![]() |
#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 |