Facebook
From JA :D, 8 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 403
  1. global main
  2. extern printf
  3.  
  4. section .data
  5. napis:   db a=%d b=%d .10.0 ;do a i b jest chyba to wpisane ale nie jestem pewien
  6.  
  7. section .bss
  8. parametry:       resq 2         ;8 bitowa zmienna w pamięci wiadomo jest ich dwie
  9.  
  10. section .text
  11.  
  12. main:
  13. push    rbp                             ;tak zwana ramka stosu
  14. mov             rbp,rsp                 ;ustawienie wskaźnika na pierwszy element stosu
  15.  
  16. mov             rdi,666
  17. mov             rsi,1000
  18. mov             [parametry],rax ;wpisanie wartości do pamięci
  19. mov             [parametry+8],rbx
  20.  
  21. mov             rdi,parametry
  22. mov             rsi,parametry+8
  23.  
  24. call    swap_reg                ;wywołanie funkcji
  25.  
  26. mov             rax,[parametry]
  27. mov             rbx,[parametry+8]
  28.  
  29. mov             rdi, qword napis
  30. mov             rsi,rax
  31. mov             rdx,rbx
  32. mov             rax,0
  33. call    printf
  34.  
  35. mov             rsp,rbp         ;zwolnienie pamięci po zmiennej lokalnej
  36. pop             rbp                     ;przywrócenie starej ramki
  37.  
  38. ret                                     ;powrót, ściągnięcie adresu powrotu z stosu i skok do kolejnej instrukcji po call
  39.  
  40. swap_reg:
  41.  
  42. push    rbp                             ;zachowanie starej ramki main'a
  43. mov             rbp,rsp                 ;ustawienie wskańnika na nowej ramce
  44. push    r12                             ;umieszczenie rejestrów roboczych na stosie
  45. push    r13
  46.  
  47. mov             r12,[rdi]               ;przekazanie wartości
  48. mov             r13,[rsi]
  49.  
  50. xor             r12,r13
  51. xor             r13,r12
  52. xor             r12,r13
  53.  
  54. mov             [rdi],r12
  55. mov             [rsi],r13
  56.  
  57. pop             r13                     ;usunięcie zmiennych ze stosu
  58. pop             r12
  59. mov             rsp,rbp         ;zwolnienie pamięci
  60. pop             rbp                     ;ściągnięcie ramki funkcji
  61.  
  62. ret                                     ;powrót do instrukcji po call

Replies to NA STOS rss

Title Name Language When
Re: NA STOS k text 8 Years ago.