File: save_xmm_x86_64_ms_masm.asm

package info (click to toggle)
php8.4 8.4.11-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 208,108 kB
  • sloc: ansic: 1,060,628; php: 35,345; sh: 11,866; cpp: 7,201; pascal: 4,913; javascript: 3,091; asm: 2,810; yacc: 2,411; makefile: 689; xml: 446; python: 301; awk: 148
file content (43 lines) | stat: -rw-r--r-- 1,425 bytes parent folder | download
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
.code

; ZEND_API void execute_ex(zend_execute_data *ex)
PUBLIC execute_ex

EXTERN execute_ex_real:PROC

; Assembly wrapper around the real execute_ex function, so that we can
; save the preserved registers when re-entering the VM from JIT code.
; See GH-18136.
execute_ex PROC EXPORT FRAME
    ; 10 floating points numbers
    ; 32 bytes shadow space
    ; 8 bytes to align after the return address
    sub rsp, 8*10 + 32 + 8
    .allocstack 8*10 + 32 + 8
    .endprolog
    movsd qword ptr [rsp + 32 + 8*0], xmm6
    movsd qword ptr [rsp + 32 + 8*1], xmm7
    movsd qword ptr [rsp + 32 + 8*2], xmm8
    movsd qword ptr [rsp + 32 + 8*3], xmm9
    movsd qword ptr [rsp + 32 + 8*4], xmm10
    movsd qword ptr [rsp + 32 + 8*5], xmm11
    movsd qword ptr [rsp + 32 + 8*6], xmm12
    movsd qword ptr [rsp + 32 + 8*7], xmm13
    movsd qword ptr [rsp + 32 + 8*8], xmm14
    movsd qword ptr [rsp + 32 + 8*9], xmm15
    call execute_ex_real
    movsd xmm6, qword ptr [rsp + 32 + 8*0]
    movsd xmm7, qword ptr [rsp + 32 + 8*1]
    movsd xmm8, qword ptr [rsp + 32 + 8*2]
    movsd xmm9, qword ptr [rsp + 32 + 8*3]
    movsd xmm10, qword ptr [rsp + 32 + 8*4]
    movsd xmm11, qword ptr [rsp + 32 + 8*5]
    movsd xmm12, qword ptr [rsp + 32 + 8*6]
    movsd xmm13, qword ptr [rsp + 32 + 8*7]
    movsd xmm14, qword ptr [rsp + 32 + 8*8]
    movsd xmm15, qword ptr [rsp + 32 + 8*9]
    add rsp, 8*10 + 32 + 8
    ret
execute_ex ENDP

END