Guest User

memory_access_balljugglery_part2

a guest
Oct 16th, 2016
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. format ELF64
  2. public copy_aligned
  3. public copy_unaligned
  4. public copy_aligned_nontemporal
  5. public copy_naive
  6.  
  7. section '.text' executable align 16
  8.  
  9. ;RDI = dest
  10. ;RSI = source
  11. ;RDX = bytes
  12.  
  13. copy_aligned:
  14.  
  15. mov rcx, rdx
  16. shr rcx, 4
  17.  
  18. align 16
  19. copy_aligned_loop:
  20.  
  21. movaps xmm0, [rsi]
  22. movaps [rdi], xmm0
  23. add rsi, 16
  24. add rdi, 16
  25.  
  26. loop copy_aligned_loop
  27. ret
  28.  
  29.  
  30. copy_aligned_nontemporal:
  31.  
  32. mov rcx, rdx
  33. shr rcx, 4
  34.  
  35. align 16
  36. copy_aligned_nontemporal_loop:
  37.  
  38. movaps xmm0, [rsi]
  39. movntps [rdi], xmm0
  40. add rsi, 16
  41. add rdi, 16
  42.  
  43. loop copy_aligned_nontemporal_loop
  44. ret
  45.  
  46.  
  47. copy_unaligned:
  48.  
  49. mov rcx, rdx
  50. shr rcx, 4
  51.  
  52. align 16
  53. copy_unaligned_loop:
  54.  
  55. movups xmm0, [rsi]
  56. movups [rdi], xmm0
  57. add rsi, 16
  58. add rdi, 16
  59.  
  60. loop copy_unaligned_loop
  61. ret
  62.  
  63.  
  64. copy_naive:
  65.  
  66. mov rcx, rdx
  67.  
  68. rep movsb
  69. ret
Advertisement
Add Comment
Please, Sign In to add comment