Applications development, KoOS API questions
Posts 1498 Joined: Sun Oct 30, 2011 6:43 pm
Fri Oct 28, 2016 11:47 pm
А указатель на контекст как передаётся?
Code: Select all
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.
Posts 1315 Joined: Thu Mar 26, 2015 5:16 pm
А в русской документации написано...
Posts 1498 Joined: Sun Oct 30, 2011 6:43 pm
Ну в русской я нашёл
* esi = указатель на структуру контекста
Вот только непонятно, какая теперь должна быть структура этого контекста.
Сейчас в документации написано так
Code: Select all
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 уже поддерживается.
Posts 1498 Joined: Sun Oct 30, 2011 6:43 pm
В дебаггере
http://websvn.kolibrios.org/filedetails ... #line-2462 у нас вот так
Code: Select all
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 , например?
Posts 1625 Joined: Thu Sep 03, 2009 1:52 pm
Ядро в _ctx_flags всегда пишет 1, в следующий dword - 0 с комментарием "reserved". Я подозреваю, чтобы можно было сигнализировать случай, когда SSE-контекста нет, ибо машина не поддерживает SSE.
Posts 1498 Joined: Sun Oct 30, 2011 6:43 pm
CleverMouse , спасибо за объяснение.
Есть ещё безымянные поля.
Code: Select all
_fpu_ip dd ?
dw ? ; <----------
dw ? ; <----------
dq ? ; <----------
dq ? ; <----------
Posts 3952 Joined: Wed Mar 08, 2006 6:25 pm
0CodErr
Поля из контекста fpu. Смотри описание fnsave/fxsave
Posts 1498 Joined: Sun Oct 30, 2011 6:43 pm
Serge , понятно. А короткая версия(EIP, EFlags, EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI) по-прежнему поддерживается?
Posts 3952 Joined: Wed Mar 08, 2006 6:25 pm
Да, зависит от размера контекста в edx. Если 40 байт, то контекст цпу. Если 48+288, то cpu+sse.
Users browsing this forum: No registered users and 43 guests