Поиск:

Ответ в темуСоздание новой темы Создание опроса
> аппаратные прерывания в dos, :::::::::::::::::::::::::::::::::::::::: 
V
    Опции темы
xach
  Дата 10.1.2008, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004
Где: СПб

Репутация: нет
Всего: нет



всем превед!
я написал резидентную программу, которая выводит на экран список номеров аппаратных прерываний у которых есть обработчики. Делал я это следующим образом:
1 - считывал по номеру вектора прерывания 4-х байтный адрес обработчика в формате сегмент-смещение
2 - считывал первый байт обработчика и сравнивал его с опкодом iret. Если первый оператор обработчика - iret, значит это заглушка и обработчика не существует, в противном случае существует

а теперь вопрос:
как узнать какие обработчики аппаратных прерываний есть в системе средствами dos, bios или иными (может просто где-то в памяти лежит)? В общем проверить работоспособность программы 

мерси за внимание!
PM MAIL   Вверх
Akina
Дата 10.1.2008, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Цитата(xach @  10.1.2008,  20:15 Найти цитируемый пост)
 Делал я это следующим образом:

Этот алгоритм неправильный. Заглушка АППАРАТНОГО прерывания в принципе не может быть голым IRET.

Цитата(xach @  10.1.2008,  20:15 Найти цитируемый пост)
я написал резидентную программу

а зачем - резидентную?

Цитата(xach @  10.1.2008,  20:15 Найти цитируемый пост)
как узнать какие обработчики аппаратных прерываний есть в системе 

Вручную.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
xach
Дата 10.1.2008, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004
Где: СПб

Репутация: нет
Всего: нет



Цитата(Akina @  10.1.2008,  22:16 Найти цитируемый пост)
Цитата(xach @  10.1.2008,  20:15 Найти цитируемый пост)
 Делал я это следующим образом:

Этот алгоритм неправильный. Заглушка АППАРАТНОГО прерывания в принципе не может быть голым IRET.

нужно ещё сбрасывать заявку? 
Код

mov al,20h
out 20h,al


Цитата(Akina @  10.1.2008,  22:16 Найти цитируемый пост)
Цитата(xach @  10.1.2008,  20:15 Найти цитируемый пост)
я написал резидентную программу

а зачем - резидентную?

такое задание дали в универе =)

Цитата(Akina @  10.1.2008,  22:16 Найти цитируемый пост)
Цитата(xach @  10.1.2008,  20:15 Найти цитируемый пост)
как узнать какие обработчики аппаратных прерываний есть в системе 

Вручную. 

я понимаю, что не само всё получится. хотелось бы поконкретнее...
PM MAIL   Вверх
SABROG
Дата 10.1.2008, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Может быть я путаю, попробуй функцию 35h (ah=35h, al=номер прерывания, 0-ffh). Результатом в bx будем вектор прерывания.

На всякий случай вот тебе TechHelp - http://alexfru.narod.ru/miscdocs/techhelp/techhelp.zip


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
xach
Дата 10.1.2008, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004
Где: СПб

Репутация: нет
Всего: нет



SABROG, не...мне не нужно получать сам вектор...с этим проблем нет...про эту функцию я знаю. проблема в методе определения того, что в системе присутствует обработчик аппаратного прерывания (08-0fh and 70-77h) ...вотъ...я думал, что с iret - правильный подход...похоже - нет =(
PM MAIL   Вверх
xach
Дата 10.1.2008, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004
Где: СПб

Репутация: нет
Всего: нет



вотъ...откопал в талмуде о прерываниях

INT 21 - DOS 2+ - IOCTL - GET DEVICE INFORMATION
    AX = 4400h
    BX = handle
Return: CF clear if successful
        DX = device information word (see #01423)
        AX destroyed
    CF set on error
        AX = error code (01h,05h,06h) (see #01680 at AH=59h/BX=0000h)


с помощью этой функции (судя по названию =) ) можно получить инфу об устройствах. но что вписывать в поле handle (bx)?..а так можно было бы по ошибке (CF=1) определить отсутствие в системе устройства
PM MAIL   Вверх
SABROG
Дата 10.1.2008, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Сомневаюсь что это для любых устройств.

А можно почитать задачу слово в слово ?

Просто все прерывания так или иначе имеют заглушки. Причем они скорее всего разные для ДОСа и Windows.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Akina
Дата 10.1.2008, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



SABROG дал правильный путь.
Во-первых, ты можешь определить сам факт наличия или отсутствия обработчика. При отсутствии вектор будет (во всяком случае должен быть) нулевой.
Во-вторых, если обработчик есть, ты можешь определить, находится обработчик в ROM компьютера, ROM расширения или в RAM. По адресу точки входа.
В третьих, если обработчик в RAM, ты можешь определить, установлен он как драйвер устройства или как резидентный обработчик. И даже, возможно, определить имя модуля, из которого он установлен. По принадлежности MCB.

Вот, пожалуй, и все...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
xach
Дата 10.1.2008, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004
Где: СПб

Репутация: нет
Всего: нет



Цитата(Akina @  10.1.2008,  23:39 Найти цитируемый пост)
При отсутствии вектор будет (во всяком случае должен быть) нулевой.

вы в этом уверены?..ведь процессор делает переход по факту аппаратного прерывания...представляю что получится если он перейдёт на адрес 0000h...

Цитата(Akina @  10.1.2008,  23:39 Найти цитируемый пост)
если обработчик есть, ты можешь определить, находится обработчик в ROM компьютера, ROM расширения или в RAM. По адресу точки входа.

а какой диапазон адресов ROM?

Цитата(Akina @  10.1.2008,  23:39 Найти цитируемый пост)
если обработчик в RAM, ты можешь определить, установлен он как драйвер устройства или как резидентный обработчик. И даже, возможно, определить имя модуля, из которого он установлен. По принадлежности MCB.

это лишнее (с учётом задачи)


SABROG, как таковой задачи нет, она была озвучена мне устно: определить у каких аппаратных прерываний есть обработчик.

Очень не корректно поставленная задача...скорее всего имелось ввиду отличить неиспользуемые устройства, от используемых. Всё для чистого dos.
PM MAIL   Вверх
SABROG
Дата 11.1.2008, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Цитата

вы в этом уверены?..ведь процессор делает переход по факту аппаратного прерывания...представляю что получится если он перейдёт на адрес 0000h...


Запусти ДОС и посмотри, ты же вроде написал вывод обработчиков ?

Под виндой то там все перехватывается. Если действительно будут нули, то твоя задача решена.

Вот распределение памяти, пните меня, если я ложанулся smile : http://www.citforum.ru/hardware/memory/mem_0402.shtml


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Akina
Дата 11.1.2008, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Цитата(SABROG @  11.1.2008,  01:16 Найти цитируемый пост)
пните меня, если я ложанулся 

Нет, не лажанулся, все верно. Но тут все крупными мазками, ему надо (?) более детально. С учетом массы спецификаций (см. напр. описание технологий QEMM), позволяющих переадресовывать блоки оперативной памяти в незанятую область верхней памяти и в видеопамять граф. режима (А000-В7FF).

Например, обработчик прерывания с адресом C200:0005 может быть как в ROM, так и в RAM. И в любом из этих случаев он может быть заглушкой.

Добавлено через 4 минуты и 10 секунд
Цитата(xach @  10.1.2008,  23:23 Найти цитируемый пост)
нужно ещё сбрасывать заявку? 
Код

mov al,20h
out 20h,al

Для CPU - да. А для FPU - само собой нет.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
xach
Дата 11.1.2008, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004
Где: СПб

Репутация: нет
Всего: нет



1 - я переправил прогу. теперь она выводит номера тех прерываний, у который пара сегмент:смещение (считанные по вектору) равны нулю
2 - загрузился с дискеты под дос

ни одного прерывания с парой 0000h:0000h нету...хотя устройства у меня не все (взять хотя бы стриммер)
PM MAIL   Вверх
Akina
Дата 11.1.2008, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



xach напишите простейший код, который можно подсунуть вместо бут-сектора дискеты и выводящий текущее состояние векторов, что-то типа:

Код

org 7c00h
xor ax,ax
mov ds,ax
mov si,ax
mov di,ax
mov ax,0B800h
cld
lodsw
; convert dword to 4 ASCII hex-digits
type_dword:
stosb
inc DI
loop type_dword 4 times
mov al,":"
stosb
inc DI
; type vectors 00h-0Fh
halt

закатайте его в бут-сектор, загрузитесь и посмотрите состояние векторов. На момент старта ОС... 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
SABROG
Дата 11.1.2008, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Я тоже об этом думал, но все-таки таким образом не узнать какие вектора не будут никогда вызываться, потому что нет устройств которые генерировали бы IRQ. И потом я думаю никакой преподаватель не станет подобное задавать. Скорее всего где-то недопонимание.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Akina
Дата 11.1.2008, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Цитата(SABROG @  11.1.2008,  10:52 Найти цитируемый пост)
нет устройств которые генерировали бы IRQ

что-о-о??? таймер-клавиатура-сопроцессор-прочая дрянь...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
SABROG
Дата 11.1.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Да нет, все 2 контроллера врятли используются на полную. Т.е. есть свободные IRQ на которых не висит пока ничего. Как узнать человеку, что IRQ свободен ? Опрашивать вручную все известные порты ?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
xach
Дата 11.1.2008, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004
Где: СПб

Репутация: нет
Всего: нет



ух...получил я зачёт...достало это СПО, из-за него нормальным и интересным ни чем не заняться =(...но вот теперь-то можно будет вернуться к теме music in dos!.. smile 

Всем спасибо за помощь!
PM MAIL   Вверх
Akina
Дата 11.1.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Цитата(SABROG @  11.1.2008,  14:08 Найти цитируемый пост)
Как узнать человеку, что IRQ свободен ? 

Сведения о выделении аппаратных прерываний находятся в таблицах БИОС - ведь эта инфа, об использовании распределяемых IRQ, выводится таблицей при старте компа... в принципе надо сканировать DMI, но уж больно гиморно и реализационно-зависимо.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
SABROG
Дата 11.1.2008, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Цитата(Akina @ 11.1.2008,  18:41)
Цитата(SABROG @  11.1.2008,  14:08 Найти цитируемый пост)
Как узнать человеку, что IRQ свободен ? 

Сведения о выделении аппаратных прерываний находятся в таблицах БИОС - ведь эта инфа, об использовании распределяемых IRQ, выводится таблицей при старте компа... в принципе надо сканировать DMI, но уж больно гиморно и реализационно-зависимо.

Ну вот я потому и говорю, подобные задачи на дипломные работы скорее тянут, чем на курсовые smile


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
xach
Дата 11.1.2008, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004
Где: СПб

Репутация: нет
Всего: нет



SABROG, это не курсовая, а дополнительное задание к лабораторным.
PM MAIL   Вверх
SABROG
Дата 12.1.2008, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Тем более, тут достаточно человеку рассказать почему не получилось определить, какие попытки предпринимались и что мешало, после такого доклада не только зачет бы поставили, да еще бы похвалили и поставили другим в пример  smile 


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
MAKCim
Дата 12.1.2008, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Цитата(SABROG @  11.1.2008,  13:08 Найти цитируемый пост)
Как узнать человеку, что IRQ свободен ?

просмотреть таблицу перенаправлений APIC
все, что замаскировано, то не используется


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
SABROG
Дата 12.1.2008, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Я думал об этом, но не был уверен (да и сейчас не уверен), к тому же мало ли кто замаскировал прерывание.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
MAKCim
Дата 12.1.2008, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Цитата(SABROG @  12.1.2008,  15:59 Найти цитируемый пост)
к тому же мало ли кто замаскировал прерывание.

да, такая ситуация возможна
линия IRQ может быть замаскирована если она не используется или активен обработчик соответствующего прерывания
можно попробовать просканировать таблицу несколько раз через некоторые промежутки времени


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
xach
Дата 12.1.2008, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004
Где: СПб

Репутация: нет
Всего: нет



MAKCim, если обработчик активен, то твоя прога не активна и нестыковки не произойдёт...
c unix.ginras.ru:
Функция APIC предоставила возможность без конфликтов работать двум устройствам на одном IRQ. Работая в паре, эти две опции прекрасно дополняют друг друга и "разводят" конфликлы оборудования на почве IRQ. НО! Процесс этот закрыт и на него нет специфической документации.

Основное при работе ACPI и APIC - это таблица DSDT, определяющая правила их работы. Она имеется в любой прошивке BIOS в бинарном виде. Intel открыла спецификацию на свои материнские платы и на алгоритм работы ACPI и APIC. Остальные производители - нет.
eof

а как эту таблицу DSDT посмотреть и где она лежит?
PM MAIL   Вверх
MAKCim
Дата 12.1.2008, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Цитата(xach @  12.1.2008,  16:41 Найти цитируемый пост)
если обработчик активен, то твоя прога не активна и нестыковки не произойдёт...

неа
чисто гипотетически
допустим в обработчике происходит исключение и управление передается на другой участок кода
в котором идет проверка APIC
т. к обработчик прерывания не завершен, то и соответствующая линия IRQ может быть замаскирована
Цитата(xach @  12.1.2008,  16:41 Найти цитируемый пост)
Функция APIC предоставила возможность без конфликтов работать двум устройствам на одном IRQ.

да, и что?
Цитата(xach @  12.1.2008,  16:41 Найти цитируемый пост)
это таблица DSDT, определяющая правила их работы. Она имеется в любой прошивке BIOS в бинарном виде.

только в BIOS, который поддерживает ACPI
кроме того
DSDT ничего не определяет
в ней содержится AML код, интерпретируемый AML-интерпретатором ядра (в случае если система является ACPI-совместимой)
возможно, вы имели в виду MADT (Multiple APIC Description Table)

Добавлено через 6 минут и 7 секунд
Цитата(xach @  12.1.2008,  16:41 Найти цитируемый пост)
а как эту таблицу DSDT посмотреть и где она лежит? 

Цитата

OSPM finds the Root System Description Pointer (RSDP) structure by searching physical memory ranges
on 16-byte boundaries for a valid Root System Description Pointer structure signature and checksum match
as follows:
• The first 1 KB of the Extended BIOS Data Area (EBDA). For EISA or MCA systems, the EBDA can
     be found in the two-byte location 40:0Eh on the BIOS data area.
• The BIOS read-only memory space between 0E0000h and 0FFFFFh.

RSDP содержит указатель на RSDT
RSDT содержит адреса других таблиц, в том числе и DSDT

Это сообщение отредактировал(а) MAKCim - 12.1.2008, 17:31


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
xach
Дата 12.1.2008, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004
Где: СПб

Репутация: нет
Всего: нет



Цитата(MAKCim @  12.1.2008,  17:29 Найти цитируемый пост)
Цитата(xach @  12.1.2008,  16:41 Найти цитируемый пост)
Функция APIC предоставила возможность без конфликтов работать двум устройствам на одном IRQ.

да, и что?

это я для полноты описания.


Цитата(MAKCim @  12.1.2008,  17:29 Найти цитируемый пост)
возможно, вы имели в виду MADT (Multiple APIC Description Table)

возможно...как я понял есть таблица в которой прописано какие устройства присутствуют, а какие - нет. точнее на какие из них нужно генерировать прерывание, а на какие - нет.
PM MAIL   Вверх
MAKCim
Дата 12.1.2008, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Цитата(xach @  12.1.2008,  17:38 Найти цитируемый пост)
возможно...как я понял есть таблица в которой прописано какие устройства присутствуют, а какие - нет. точнее на какие из них нужно генерировать прерывание, а на какие - нет. 

нет
она описывает APIC-и (Local APIC, I/O APIC, Local SAPIC, I/O SAPIC)


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
xach
Дата 12.1.2008, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004
Где: СПб

Репутация: нет
Всего: нет



т.е. по адресу 40:0Eh лежит 2-х байтовый RSDP, по какому-то смещению лежит RSDT, который укажывает на таблицу в которой тоже по какому-то смещению лежит DSDT?..

а при использовании 2-х байтного указателя юзать так: 0:ptr?
т.е. сегмент=0, а смещение этому 2-х байтному указателю?
PM MAIL   Вверх
MAKCim
Дата 12.1.2008, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Цитата(xach @  12.1.2008,  17:56 Найти цитируемый пост)
т.е. по адресу 40:0Eh лежит 2-х байтовый RSDP

нет
вот код поиска RSDP
Код

rsdp:
    mov ax, 0xE000
    push ds
    mov ds, ax
    xor bx, bx
start:
    cmp dword [bx], 0x20445352 ; первая часть сигнатуры RSDP
    jnz @F
    cmp dword [bx + 4], 0x20525450 ; вторая часть сигнатуры RSDP
    jz exit
@@:
    add bx, 8
    jnz start
; RSDP нет
...
exit:
; RSDP есть по адресу ds:bx
...


Это сообщение отредактировал(а) MAKCim - 12.1.2008, 18:10


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
SABROG
Дата 13.1.2008, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Если в RSDP -> RSDT -> DSDT, а

Цитата

DSDT ничего не определяет
в ней содержится AML код, интерпретируемый AML-интерпретатором ядра (в случае если система является ACPI-совместимой)
возможно, вы имели в виду MADT (Multiple APIC Description Table)


То зачем вы ищите вообще RSDP ?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
MAKCim
Дата 13.1.2008, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Цитата(SABROG @  13.1.2008,  12:37 Найти цитируемый пост)
То зачем вы ищите вообще RSDP ? 

MADT находится через RSDT, как и DSDT


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
SABROG
Дата 13.1.2008, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Похоже еще придется учитывать все спецификации ACPI, определять каким-то образом. Вот тут 
http://acpi.info/presentations/S01USMOBS169_OS%20new.ppt перечеркивается старая структура RSDP и определяется новая. Получается в данный момент мы можем адаптироваться только под один вид платформы. smile

Реально это уже такие дебри пошли, которые на диплом потянут smile


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
MAKCim
Дата 13.1.2008, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Цитата(SABROG @  13.1.2008,  14:30 Найти цитируемый пост)
определять каким-то образом

поле Revision в RSDP



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
xach
Дата 13.1.2008, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004
Где: СПб

Репутация: нет
Всего: нет



MAKCim, а нет ли какой-нибудь информации об этих всех указателях, структурах, их адресах, их поиске (если они начинаются (как было описано выше) с сигнатуры) и т.д.?
PM MAIL   Вверх
MAKCim
Дата 13.1.2008, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207





--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
mb78
Дата 12.7.2008, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 11.7.2008

Репутация: нет
Всего: нет



Решали какие  DOS ,какие Bios ,разработчки компьютеа IBM.Поэтому что есть что легче всего узнать из описания. докуметации.
В универе можете сказать,что программно это не определить,за исключением того случая ,если сразу тоит iret а если надо просто
выяснить ,то MS-DOS это int &H21, остальные ,по-моему до &H60-го -Bios

Это сообщение отредактировал(а) mb78 - 12.7.2008, 21:43
PM MAIL   Вверх
AndNot
Дата 14.7.2008, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



Ну надо же, даже до ACPI добрались, хотя задача в принципе решается проще smile При старте BIOS устанавливает заглушки на все неиспользуемые им вектора. Их всего два типа, первый - это простой IRET, а второй - для аппаратного прерывания. ДОС не меняет эти заглушки, разве что устанавливает некоторые свои обработчики. Поэтому вся задача сводится к поиску адресов этих заглушек, что не так уж и сложно. Достаточно определить совпадающие адреса в таблице прерываний.
PM MAIL   Вверх
Evgeniy22
Дата 6.2.2010, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 6.2.2010

Репутация: нет
Всего: нет



подскажите пожалуйста как с помощью ACPI выключить комп, тоесть перевести его в состояние G3. Все таблицы и адреса регистров я нашёл. Функцию ресет тоже сделал. С языком AML не разбирался... Подскажите как сделать это и нужно ли для етого знать AML?
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.1810 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.