|
|
|
Прерывания и исключения (protect mode)
|
|||
|---|---|---|---|
|
#18+
Добрый день! Старался понять сам, но никак не получается )) Дело в том, что мне не понятно как же работать с прерываниями БИОС в защищённом режиме, ведь первые 19 дескрипторов (вообще 31, если учитываать резерв) в IDT указывают на обработчики исключений (и соостветственно эти обработчики должны быть расчитаны именно на исключения)... Но вот например надо мне сменить видеорежим, что же тогда делать? :) Правильно ли я понимаю, что тогда в таблицах дескрипторов надо переопределять обработчики этих прерываний по другим номерам (то есть обработчик первого прерывания станет обработчиком 32, второго - станет обработчиком 33 и т.д.)? Или так не получиться, и надо переписывать все прерывания самому? И очень интересно, как это сделали разработчики Виндовса? Большое спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2008, 17:05 |
|
||
|
Прерывания и исключения (protect mode)
|
|||
|---|---|---|---|
|
#18+
P.S. Понимаю, что вопрос глупый, но просто я с pm совсем не знаком... Потому интересно как это всё умные люди делают :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2008, 17:41 |
|
||
|
Прерывания и исключения (protect mode)
|
|||
|---|---|---|---|
|
#18+
ПрограмёрИ очень интересно, как это сделали разработчики Виндовса?они написали свои драйвера и не пользуются BIOS'ом, а если пользуются - переключают режим. вызывать прерывания можно не только через инструкцию int xx, можно её проэмулировать через две: pushf; call far [int_funcs][xx]; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2008, 18:44 |
|
||
|
Прерывания и исключения (protect mode)
|
|||
|---|---|---|---|
|
#18+
ага... спасибо )) То есть данную проблему решают драйвера, в которых они всё переопределяют сами и создают свои, специальные для своей операционной системы, функции... ))) Значит пора бы мне в драйвера немного полезть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2008, 22:10 |
|
||
|
Прерывания и исключения (protect mode)
|
|||
|---|---|---|---|
|
#18+
Кстати, подскажите пожалуйста какой-нить ресурс, где можно было бы почитать про то, как пишуться драйвера, как это всё работает и т.д. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2008, 22:33 |
|
||
|
Прерывания и исключения (protect mode)
|
|||
|---|---|---|---|
|
#18+
Всё... нашёл ))) вот по-моему неплохая подборка статей... Здесь есть много чего для того, кто хочет стать системным программистом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2008, 13:25 |
|
||
|
Прерывания и исключения (protect mode)
|
|||
|---|---|---|---|
|
#18+
Жесть. 2 Програмёр: Вы не поверите, но контроллёр прерываний тоже ПРОГРАММИРУЕТСЯ!!! На любой номер прерывания (почти). PS Бросили бы вы это безнадёжное (для вас) дело, пока не поздно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2008, 08:44 |
|
||
|
Прерывания и исключения (protect mode)
|
|||
|---|---|---|---|
|
#18+
ПрограмёрВсё... нашёл ))) вот по-моему неплохая подборка статей... Здесь есть много чего для того, кто хочет стать системным программистом... Статья, написаная блондинкой в журнале развекательного содержания - не слишком хороший старт для системного программиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2008, 11:16 |
|
||
|
Прерывания и исключения (protect mode)
|
|||
|---|---|---|---|
|
#18+
Mastack12 Програмёр: Вы не поверите, но контроллёр прерываний тоже ПРОГРАММИРУЕТСЯ!!! На любой номер прерывания (почти).насколько я понял - автор спрашивал про программные прерывания, которые генерируются командой int например int 10h, а не про аппаратные, которые приходят с контроллера прерываний. ему было непонятно, что делать если код вызывает функции биоса через например ту же int 10h, как переписать этот код, что бы он работал в защищённом режиме, так как в защищённом режиме этот int 10h попадает на обработчик "Floating point error" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2008, 11:43 |
|
||
|
Прерывания и исключения (protect mode)
|
|||
|---|---|---|---|
|
#18+
ПрограмёрКстати, подскажите пожалуйста какой-нить ресурс, где можно было бы почитать про то, как пишуться драйвера, как это всё работает и т.д. тынц смотри раздел защищённый режим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2008, 14:15 |
|
||
|
Прерывания и исключения (protect mode)
|
|||
|---|---|---|---|
|
#18+
mayton ПрограмёрВсё... нашёл ))) вот по-моему неплохая подборка статей... Здесь есть много чего для того, кто хочет стать системным программистом... Статья, написаная блондинкой в журнале развекательного содержания - не слишком хороший старт для системного программиста. Спасибо, буду знать ;) Хотя по-моему даже и это почитать полезно :) Мне всё-ровно предстоит прочитать ещё сотни, а то и тысячи статей. Ёшнасколько я понял - автор спрашивал про программные прерывания, которые генерируются командой int например int 10h, а не про аппаратные, которые приходят с контроллера прерываний. ему было непонятно, что делать если код вызывает функции биоса через например ту же int 10h, как переписать этот код, что бы он работал в защищённом режиме, так как в защищённом режиме этот int 10h попадает на обработчик "Floating point error" Да... Именно это я и имел ввиду :) Gatman ПрограмёрКстати, подскажите пожалуйста какой-нить ресурс, где можно было бы почитать про то, как пишуться драйвера, как это всё работает и т.д. тынц смотри раздел защищённый режим Спасибо )) Очень познавательно... Всем БОЛЬШОЕ спасибо за советы :) P.S. Полезу я в сторону работы с портами )) Как вы считаете, стоит ли это делать, или же это глупая затея? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 01:26 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=35346564&tid=1345244]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
157ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 474ms |

| 0 / 0 |
