From 585f0d6cbfa13b9b7aa1ddb4aa934f02f57697a2 Mon Sep 17 00:00:00 2001 From: pavelyakov Date: Mon, 27 Apr 2020 19:00:36 +0000 Subject: [PATCH] Core: new function sys array git-svn-id: svn://kolibrios.org@7828 a494cfbc-eb01-0410-851d-a64ba20cac60 --- kernel/trunk/core/syscall.inc | 1 + kernel/trunk/kernel32.inc | 2 ++ kernel/trunk/other/array.inc | 65 +++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100755 kernel/trunk/other/array.inc diff --git a/kernel/trunk/core/syscall.inc b/kernel/trunk/core/syscall.inc index 83f6354018..7bdb8e99ce 100644 --- a/kernel/trunk/core/syscall.inc +++ b/kernel/trunk/core/syscall.inc @@ -179,6 +179,7 @@ iglobal dd undefined_syscall ; 78-free dd undefined_syscall ; 79-free dd fileSystemUnicode ; 80-File system interface for different encodings + dd sys_array ; 81-Array times 255 - ( ($-servetable2) /4 ) dd undefined_syscall dd sys_end ; -1-end application diff --git a/kernel/trunk/kernel32.inc b/kernel/trunk/kernel32.inc index 3dc4488605..7608137ff6 100644 --- a/kernel/trunk/kernel32.inc +++ b/kernel/trunk/kernel32.inc @@ -70,6 +70,8 @@ include "network/stack.inc" include "crc.inc" ; checksums include "unicode.inc" +include "other/array.inc" ; array + ; include "imports.inc" ; include "core/ext_lib.inc" ; include "core/conf_lib.inc" diff --git a/kernel/trunk/other/array.inc b/kernel/trunk/other/array.inc new file mode 100755 index 0000000000..eebdf05ae3 --- /dev/null +++ b/kernel/trunk/other/array.inc @@ -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