summaryrefslogtreecommitdiffstats
path: root/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/common/arch/invokeNative_ia32.asm
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/common/arch/invokeNative_ia32.asm')
-rw-r--r--fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/common/arch/invokeNative_ia32.asm27
1 files changed, 27 insertions, 0 deletions
diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/common/arch/invokeNative_ia32.asm b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/common/arch/invokeNative_ia32.asm
new file mode 100644
index 000000000..c52c8d6ed
--- /dev/null
+++ b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/common/arch/invokeNative_ia32.asm
@@ -0,0 +1,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 \ No newline at end of file