The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск Wine 8.10"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
. "Выпуск Wine 8.10" +2 +/
Сообщение от n00by (ok), 10-Июн-23, 18:58 
По первой ссылке видно -- была в каждом файле отдельная таблица

static struct unix_funcs unix_funcs =
{
-    NtUserDrawCaptionTemp,
-    NtUserDrawMenuBarTemp,
-    NtUserEndPaint,
-    NtUserExcludeUpdateRgn,
-    NtUserReleaseDC,
-    NtUserScrollDC,
-    NtUserSelectPalette,
-    NtUserUpdateLayeredWindow,

и вызывался сервис (системная функция) вот так:

BOOL WINAPI NtUserDrawCaptionTemp( HWND hwnd, HDC hdc, const RECT *rect, HFONT font,
                                   HICON icon, const WCHAR *str, UINT flags )
{
    if (!unix_funcs) return FALSE;
    return unix_funcs->pNtUserDrawCaptionTemp( hwnd, hdc, rect, font, icon, str, flags );
}


Теперь обобщили и всё вызывается через единый переходник. Про цели не знаю. В оригинальной NT с каждым ядром и сервипаком индексы системных сервисов меняются, потому их и там наверняка и в вирусах используют лишь в исключительных случаях; так что вряд ли это что-то даст для совместимости. Вероятно, так удобнее поддерживать.

По скорости вызова мало что изменилось, добавилась одна команда для вычисления адреса в таблице по индексу сервиса. Косвенное обращение в и в предыдущем варианте есть. Предсказатель в данном случае смотрит на адрес, откуда был вызов и предшествующие команды, а не адрес в таблице переходов:

2.4.2.3 Branch Prediction

Branch prediction predicts the branch target and enables the processor to begin executing instructions
long before the branch true execution path is known. All branches utilize the branch prediction unit (BPU)
for prediction. This unit predicts the target address not only based on the EIP of the branch but also
based on the execution path through which execution reached this EIP. The BPU can efficiently predict the
following branch types:
• Conditional branches.
• Direct calls and jumps.
• Indirect calls and jumps.
• Returns.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск Wine 8.10, opennews, 10-Июн-23, 08:06  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру