summaryrefslogtreecommitdiffstats
path: root/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/common/arch/invokeNative_ia32.asm
blob: c52c8d6ed96f92678082a113395ef650a90b1c1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
;
; Copyright (C) 2019 Intel Corporation.  All rights reserved.
; SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
;

    .386
    .model flat
    .code
_invokeNative PROC
    push    ebp
    mov     ebp,esp
    mov     ecx, [ebp+16]          ; ecx = argc */
    mov     edx, [ebp+12]          ; edx = argv */
    test    ecx, ecx
    jz      skip_push_args          ; if ecx == 0, skip pushing arguments */
    lea     edx, [edx+ecx*4-4]   ; edx = edx + ecx * 4 - 4 */
    sub     edx,esp              ; edx = edx - esp */
loop_push:
    push    [esp+edx]
    loop    loop_push                      ; loop ecx counts */
skip_push_args:
    mov     edx, [ebp+8]           ; edx = func_ptr */
    call    edx
    leave
    ret
_invokeNative ENDP
END