program_prologue_win64.inc 862 B

1234567891011121314151617181920212223242526272829303132
  1. ;# callee-saved registers - Microsoft x64 calling convention
  2. push rbx
  3. push rbp
  4. push rdi
  5. push rsi
  6. push r12
  7. push r13
  8. push r14
  9. push r15
  10. sub rsp, 80
  11. movdqu xmmword ptr [rsp+64], xmm6
  12. movdqu xmmword ptr [rsp+48], xmm7
  13. movdqu xmmword ptr [rsp+32], xmm8
  14. movdqu xmmword ptr [rsp+16], xmm9
  15. movdqu xmmword ptr [rsp+0], xmm10
  16. sub rsp, 80
  17. movdqu xmmword ptr [rsp+64], xmm11
  18. movdqu xmmword ptr [rsp+48], xmm12
  19. movdqu xmmword ptr [rsp+32], xmm13
  20. movdqu xmmword ptr [rsp+16], xmm14
  21. movdqu xmmword ptr [rsp+0], xmm15
  22. ; function arguments
  23. push rcx ; RegisterFile& registerFile
  24. mov rbp, qword ptr [rdx] ; "mx", "ma"
  25. mov rdi, qword ptr [rdx+8] ; uint8_t* dataset
  26. mov rsi, r8 ; convertible_t* scratchpad
  27. mov rbx, r9 ; loop counter
  28. include program_prologue_load.inc
  29. jmp randomx_program_loop_begin