Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

n  EBX – физический адрес базы сервиса;

n  ECX – размер сегмента сервиса;

n  EDX – точка входа в сервис BIOS32 (смещение относительно базы, возвращённой в регистре EBX).

Вот как выполняется данный вызов:

    __save_flags(flags); __cli();

    __asm__("lcall (%%edi); cld"

           : "=a" (return_code),

             "=b" (address),   // физический адрес базы сервиса

             "=c" (length),    // размер сегмента сервиса

             "=d" (entry)      // точка входа в сервис BIOS32 (смещение относительно базы, возвращенной в EBX)

           : "0" (service),    // идентификатор запрашиваемого сервиса ($PCI)

             "1" (0),          // селектор функции, должен быть равен нулю

             "D" (&bios32_indirect)); // адрес точки входа в BIOS32

    __restore_flags(flags);

Конструкция типа

    __save_flags(flags);

    __cli();

 

    /* This code runs with interrupts disabled */

 

    __restore_flags(flags);

используется для защиты критичных участков кода от воздействия прерываний.

Проанализируем код возврата:

    switch (return_code) {

Если код возврата равен 0, то сервиc PCI BIOS присутствует, и адрес точки входа в него можно определить, сложив значение адреса базы (address) и смещения относительно базы (entry):

           case 0:

                 return address + entry;    // искомый адрес точки входа в сервис BIOS32 (PCI BIOS)

Если код возврата равен 0x80, запрашиваемый сервис отсутствует:

           case 0x80:   /* Not present */

                 printk(KERN_WARNING "bios32_service(0x%08x): not present ", service);

                 return 0;

           default: /* Shouldn't happen */


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100