xamarin-macios/runtime/trampolines-x86_64-objc_msg...

47 строки
1.3 KiB
PHP

call _xamarin_get_frame_length
# r12 holds the amount of stack space we need
movq %rax, %r12
# first align stack requirement to 16 bytes
addq $15,%r12
shrq $4,%r12
salq $4,%r12
# then make space for the arguments
subq %r12, %rsp
# copy arguments from old location in the stack to new location in the stack
# %rcx will hold the amount of bytes left to copy
# %rsi the current src location
# %rdi the current dst location
movq %r12, %rcx # rcx = frame_length
leaq 16(%rbp),%rsi # rsi = address of first argument we got
movq %rsp,%rdi # rdi = address of the bottom of the stack
L_start:
cmpq $0,%rcx #
je L_end # while (left != 0) {
subq $8,%rcx # len -= 8
movq (%rsi,%rcx),%rax # tmp = src [len]
movq %rax,(%rdi,%rcx) # dst [len] = tmp
jmp L_start # }
L_end:
movq -16(%rbp), %rdi
movq -24(%rbp), %rsi
movq -32(%rbp), %rdx
movq -40(%rbp), %rcx
movq -48(%rbp), %r8
movq -56(%rbp), %r9
movq -64(%rbp), %rax
/* skip 8 bytes so that this is 16-byte aligned */
movaps -80(%rbp), %xmm0
movaps -96(%rbp), %xmm1
movaps -112(%rbp), %xmm2
movaps -128(%rbp), %xmm3
movaps -144(%rbp), %xmm4
movaps -160(%rbp), %xmm5
movaps -176(%rbp), %xmm6
movaps -192(%rbp), %xmm7