Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Ср окт 18, 2017 12:21 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 9 сообщений ] 
Автор Сообщение
 Заголовок сообщения: SysFn69.2:SetThreadContext
СообщениеДобавлено: Пт окт 28, 2016 11:47 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1069
А указатель на контекст как передаётся?
Код:
Parameters:
  * eax = 69 - function number
  * ebx = 2 - subfunction number
  * ecx = thread identifier
  * edx = size of context structure, must be 0x28=40 bytes
Returned value:
  * function does not return value
Format of context structure is shown in the description of
subfunction 1.


Вернуться к началу
 Заголовок сообщения: Re: SysFn69.2:SetThreadContext
СообщениеДобавлено: Сб окт 29, 2016 1:10 am 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1186
А в русской документации написано...


Вернуться к началу
 Заголовок сообщения: Re: SysFn69.2:SetThreadContext
СообщениеДобавлено: Пт ноя 04, 2016 5:08 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1069
Ну в русской я нашёл
Цитата:
* esi = указатель на структуру контекста

Вот только непонятно, какая теперь должна быть структура этого контекста.
Сейчас в документации написано так
Код:
Format of context structure: (FPU is not supported yet)
  * +0: dword: eip
  * +4: dword: eflags
  * +8: dword: eax
  * +12 = +0xC: dword: ecx
  * +16 = +0x10: dword: edx
  * +20 = +0x14: dword: ebx
  * +24 = +0x18: dword: esp
  * +28 = +0x1C: dword: ebp
  * +32 = +0x20: dword: esi
  * +36 = +0x24: dword: edi
Но документация давно не обновлялась, ведь теперь FPU уже поддерживается.


Вернуться к началу
 Заголовок сообщения: Re: SysFn69.2:SetThreadContext
СообщениеДобавлено: Пн ноя 07, 2016 7:34 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1069
В дебаггере http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fprograms%2Fdevelop%2Fmtdbg%2Fmtdbg.asm&rev=6344#line-2462 у нас вот так
Код:
context:
_eip    dd ?
_eflags dd ?
_eax    dd ?
_ecx    dd ?
_edx    dd ?
_ebx    dd ?
_esp    dd ?
_ebp    dd ?
_esi    dd ?
_edi    dd ?
 
_ctx_flags:
        dd ?
        dd ?
 
_sse_flags:
 
 
_fcw    dw ?
_fsw    dw ?
_ftw    db ?
        db ?
_fop    dw ?
_fpu_ip dd ?
        dw ?
        dw ?
 
        dq ?
        dq ?
 
fpu_context:
mmx_context:
_st0:
_mm0:   rq 2
_st1:
_mm1:   rq 2
_st2:
_mm2:   rq 2
_st3:
_mm3:   rq 2
_st4:
_mm4:   rq 2
_st5:
_mm5:   rq 2
_st6:
_mm6:   rq 2
_st7:
_mm7:   rq 2
 
sse_context:
_xmm0   rq 2
_xmm1   rq 2
_xmm2   rq 2
_xmm3   rq 2
_xmm4   rq 2
_xmm5   rq 2
_xmm6   rq 2
_xmm7   rq 2
ctx_end:
Но, разумеется, нужны пояснения. Что за _ctx_flags, например?


Вернуться к началу
 Заголовок сообщения: Re: SysFn69.2:SetThreadContext
СообщениеДобавлено: Пт ноя 11, 2016 9:14 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1599
Ядро в _ctx_flags всегда пишет 1, в следующий dword - 0 с комментарием "reserved". Я подозреваю, чтобы можно было сигнализировать случай, когда SSE-контекста нет, ибо машина не поддерживает SSE.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: SysFn69.2:SetThreadContext
СообщениеДобавлено: Вт ноя 15, 2016 3:11 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1069
CleverMouse, спасибо за объяснение.
Есть ещё безымянные поля.
Код:
_ftw    db ?
        db ?                  ; <----------

Код:
_fpu_ip dd ?
        dw ?                  ; <----------
        dw ?                  ; <----------
 
        dq ?                  ; <----------
        dq ?                  ; <----------


Вернуться к началу
 Заголовок сообщения: Re: SysFn69.2:SetThreadContext
СообщениеДобавлено: Вт ноя 15, 2016 4:43 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
0CodErr
Поля из контекста fpu. Смотри описание fnsave/fxsave


Вернуться к началу
 Заголовок сообщения: Re: SysFn69.2:SetThreadContext
СообщениеДобавлено: Вт ноя 15, 2016 4:48 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1069
Serge, понятно. А короткая версия(EIP, EFlags, EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI) по-прежнему поддерживается?


Вернуться к началу
 Заголовок сообщения: Re: SysFn69.2:SetThreadContext
СообщениеДобавлено: Вт ноя 15, 2016 5:40 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Да, зависит от размера контекста в edx. Если 40 байт, то контекст цпу. Если 48+288, то cpu+sse.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 9 сообщений ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB