Core: new function sys array

git-svn-id: svn://kolibrios.org@7828 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
pavelyakov 2020-04-27 19:00:36 +00:00
parent 07efb9321b
commit 585f0d6cbf
3 changed files with 68 additions and 0 deletions

View File

@ -179,6 +179,7 @@ iglobal
dd undefined_syscall ; 78-free dd undefined_syscall ; 78-free
dd undefined_syscall ; 79-free dd undefined_syscall ; 79-free
dd fileSystemUnicode ; 80-File system interface for different encodings dd fileSystemUnicode ; 80-File system interface for different encodings
dd sys_array ; 81-Array
times 255 - ( ($-servetable2) /4 ) dd undefined_syscall times 255 - ( ($-servetable2) /4 ) dd undefined_syscall
dd sys_end ; -1-end application dd sys_end ; -1-end application

View File

@ -70,6 +70,8 @@ include "network/stack.inc"
include "crc.inc" ; checksums include "crc.inc" ; checksums
include "unicode.inc" include "unicode.inc"
include "other/array.inc" ; array
; include "imports.inc" ; include "imports.inc"
; include "core/ext_lib.inc" ; include "core/ext_lib.inc"
; include "core/conf_lib.inc" ; include "core/conf_lib.inc"

65
kernel/trunk/other/array.inc Executable file
View File

@ -0,0 +1,65 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; Copyright (C) KolibriOS team 2004-2020. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License ;;
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$Revision: 7825 $
align 4
proc sys_array
cmp ebx, 0
je sys_init_array
ret
endp
align 4
proc sys_init_array
push ecx
push edx
call sys_index_array
ret
endp
align 4
sys_index_array:
enter 8, 0
mov eax, [ebp+8]
and eax, 3
mov [ebp-4], eax
mov eax, [ebp-4]
shl eax, 2
add eax, [ebp+0Ch]
mov [ebp-8], eax
mov eax, [ebp-4]
cmp [ebp+8], eax
jne .A4F4h
push 10h
pop eax
add eax, [ebp-8]
jmp .A516h
.A4F4h:
mov esi, [ebp-8]
cmp dword [esi], 0
jne .A508h
mov eax, 68
mov ebx, 12
mov ecx, 32
call malloc
mov esi, [ebp-8]
mov [esi], eax
.A508h:
push dword[esi]
mov eax, [ebp+8]
shr eax, 2
push eax
call sys_index_array
.A516h:
leave
ret 8