mirror of
				https://github.com/bytecodealliance/wasm-micro-runtime.git
				synced 2025-10-31 05:11:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
| ;
 | |
| ; Copyright (C) 2019 Intel Corporation.  All rights reserved.
 | |
| ; SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 | |
| ;
 | |
| 
 | |
| _TEXT  SEGMENT
 | |
|     ; rcx func_ptr
 | |
|     ; rdx argv
 | |
|     ; r8 n_stacks
 | |
| 
 | |
| invokeNative PROC
 | |
|     push rbp
 | |
|     mov rbp, rsp
 | |
| 
 | |
|     mov r10, rcx    ; func_ptr
 | |
|     mov rax, rdx    ; argv
 | |
|     mov rcx, r8     ; n_stacks
 | |
| 
 | |
| ; fill all fp args
 | |
|     movsd xmm0, qword ptr [rax + 0]
 | |
|     movsd xmm1, qword ptr [rax + 8]
 | |
|     movsd xmm2, qword ptr [rax + 16]
 | |
|     movsd xmm3, qword ptr [rax + 24]
 | |
| 
 | |
| ; check for stack args
 | |
|     cmp rcx, 0
 | |
|     jz cycle_end
 | |
| 
 | |
|     mov rdx, rsp
 | |
|     and rdx, 15
 | |
|     jz no_abort
 | |
|     int 3
 | |
| no_abort:
 | |
|     mov rdx, rcx
 | |
|     and rdx, 1
 | |
|     shl rdx, 3
 | |
|     sub rsp, rdx
 | |
| 
 | |
| ; store stack args
 | |
|     lea r9, qword ptr [rax + rcx * 8 + 56]
 | |
|     sub r9, rsp ; offset
 | |
| cycle:
 | |
|     push qword ptr [rsp + r9]
 | |
|     loop cycle
 | |
| 
 | |
| cycle_end:
 | |
|     mov rcx, [rax + 32]
 | |
|     mov rdx, [rax + 40]
 | |
|     mov r8,  [rax + 48]
 | |
|     mov r9,  [rax + 56]
 | |
| 
 | |
|     sub rsp, 32 ; shadow space
 | |
| 
 | |
|     call r10
 | |
|     leave
 | |
|     ret
 | |
| 
 | |
| invokeNative ENDP
 | |
| 
 | |
| _TEXT   ENDS
 | |
| 
 | |
| END
 | 
