95 lines
1.9 KiB
ArmAsm
95 lines
1.9 KiB
ArmAsm
![]() |
.text
|
||
|
.align 2
|
||
|
.globl privateSnippetExecutor
|
||
|
.type privateSnippetExecutor, @function
|
||
|
privateSnippetExecutor:
|
||
|
.LFB3:
|
||
|
pushq %rbp
|
||
|
.LCFI0:
|
||
|
movq %rsp, %rbp
|
||
|
.LCFI1:
|
||
|
subq $160, %rsp
|
||
|
.LCFI2:
|
||
|
movq %r10, -152(%rbp) # Save (nVtableOffset << 32) + nFunctionIndex
|
||
|
|
||
|
movq %rdi, -112(%rbp) # Save GP registers
|
||
|
movq %rsi, -104(%rbp)
|
||
|
movq %rdx, -96(%rbp)
|
||
|
movq %rcx, -88(%rbp)
|
||
|
movq %r8 , -80(%rbp)
|
||
|
movq %r9 , -72(%rbp)
|
||
|
|
||
|
movsd %xmm0, -64(%rbp) # Save FP registers
|
||
|
movsd %xmm1, -56(%rbp)
|
||
|
movsd %xmm2, -48(%rbp)
|
||
|
movsd %xmm3, -40(%rbp)
|
||
|
movsd %xmm4, -32(%rbp)
|
||
|
movsd %xmm5, -24(%rbp)
|
||
|
movsd %xmm6, -16(%rbp)
|
||
|
movsd %xmm7, -8(%rbp)
|
||
|
|
||
|
leaq -144(%rbp), %r9 # 6th param: sal_uInt64 * pRegisterReturn
|
||
|
leaq 16(%rbp), %r8 # 5rd param: void ** ovrflw
|
||
|
leaq -64(%rbp), %rcx # 4th param: void ** fpreg
|
||
|
leaq -112(%rbp), %rdx # 3rd param: void ** gpreg
|
||
|
movl -148(%rbp), %esi # 2nd param: sal_int32 nVtableOffset
|
||
|
movl -152(%rbp), %edi # 1st param: sal_int32 nFunctionIndex
|
||
|
|
||
|
call cpp_vtable_call
|
||
|
|
||
|
cmp $10, %rax # typelib_TypeClass_FLOAT
|
||
|
je .Lfloat
|
||
|
cmp $11, %rax # typelib_TypeClass_DOUBLE
|
||
|
je .Lfloat
|
||
|
|
||
|
movq -144(%rbp), %rax # Return value (int case)
|
||
|
jmp .Lfinish
|
||
|
.Lfloat:
|
||
|
movlpd -144(%rbp), %xmm0 # Return value (float/double case)
|
||
|
|
||
|
.Lfinish:
|
||
|
leave
|
||
|
ret
|
||
|
.LFE3:
|
||
|
.size privateSnippetExecutor, .-privateSnippetExecutor
|
||
|
.section .eh_frame,"a",@progbits
|
||
|
.Lframe1:
|
||
|
.long .LECIE1-.LSCIE1
|
||
|
.LSCIE1:
|
||
|
.long 0x0
|
||
|
.byte 0x1
|
||
|
.string "zP"
|
||
|
.uleb128 0x1
|
||
|
.sleb128 -8
|
||
|
.byte 0x10
|
||
|
.uleb128 0x9
|
||
|
.byte 0x0
|
||
|
.quad __gxx_personality_v0
|
||
|
.byte 0xc
|
||
|
.uleb128 0x7
|
||
|
.uleb128 0x8
|
||
|
.byte 0x90
|
||
|
.uleb128 0x1
|
||
|
.align 8
|
||
|
.LECIE1:
|
||
|
.LSFDE1:
|
||
|
.long .LEFDE1-.LASFDE1
|
||
|
.LASFDE1:
|
||
|
.long .LASFDE1-.Lframe1
|
||
|
.quad .LFB3
|
||
|
.quad .LFE3-.LFB3
|
||
|
.uleb128 0x0
|
||
|
.byte 0x4
|
||
|
.long .LCFI0-.LFB3
|
||
|
.byte 0xe
|
||
|
.uleb128 0x10
|
||
|
.byte 0x86
|
||
|
.uleb128 0x2
|
||
|
.byte 0x4
|
||
|
.long .LCFI1-.LCFI0
|
||
|
.byte 0xd
|
||
|
.uleb128 0x6
|
||
|
.align 8
|
||
|
.LEFDE1:
|
||
|
.section .note.GNU-stack,"",@progbits
|