Advertisement
Guest User

Untitled

a guest
Feb 2nd, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 2014-02-09
  2.  
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. struct st1 { char vi[4]; };
  7.  
  8. struct st2 { int vd[4]; };
  9.  
  10. class cl {
  11.  
  12.     char v1[4]; char v2[4]; int v3[4];
  13.  
  14. public:
  15.  
  16.     cl(st1 ss); cl(st1 s1, int ar2[]);
  17.  
  18.     cl xxx(char ar1[], st2 s2);
  19.  
  20.     void stampa() {
  21.         char i;
  22.         for (i=0;i<4;i++) cout << (int)v1[i] << ' '; cout << endl;
  23.         for (i=0;i<4;i++) cout << (int)v2[i] << ' '; cout << endl;
  24.         for (i=0;i<4;i++) cout << v3[i] << ' '; cout << endl << endl;
  25.     }
  26.  
  27. };
  28.  
  29. #include "cc.h"
  30. cl::cl(st1 ss)
  31. {   for (int i=0; i<4; i++)
  32.     { v1[i] = ss.vi[i]; v2[i] = ss.vi[i]; v3[3-i] = ss.vi[i]+ss.vi[i]; }
  33. }
  34. cl::cl(st1 s1, int ar2[])
  35. {   for (int i=0; i<4; i++)
  36.     { v1[i] = s1.vi[i]-2; v2[i] = s1.vi[i]; v3[i] = ar2[i]; }
  37. }
  38. cl cl::xxx(char ar1[], st2 s2)
  39. {   st1 s1; for (int i=0;i<4;i++) s1.vi[i]=ar1[i];
  40.     cl cla(s1);
  41.     for (int i=0;i<4;i++) cla.v3[i] = s2.vd[i];
  42.     return cla;
  43. }
  44.  
  45. SOLUZIONE
  46.  
  47. .text
  48. .global _ZN2clC1E3st1
  49.  
  50. _ZN2clC1E3st1:
  51.  
  52. #record di attivazione
  53.  
  54. #|i |ss |-16
  55. #|  this    |-8
  56.  
  57. .set this, -8
  58. .set i, -12
  59. .set ss, -16
  60.  
  61.     pushq %rbp
  62.     movq %rsp, %rbp
  63.     subq $16, %rsp
  64.    
  65.     movq %rdi, this(%rbp)
  66.     movl %esi, ss(%rbp)
  67.    
  68.     movl $0, i(%rbp)
  69. for:
  70.     cmpl $4, i(%rbp)
  71.     jge finefor
  72.    
  73.     movslq i(%rbp), %rcx
  74.     movq this(%rbp), %r8
  75.    
  76.     movb ss(%rbp, %rcx), %al
  77.     movb %al, (%r8, %rcx)
  78.     movb %al, 4(%r8, %rcx) 
  79.     movsbl %al, %eax
  80.     addl %eax, %eax
  81.     movq $3, %rdx
  82.     subq %rcx, %rdx     #si può fare?
  83.     movl %eax, 8(%r8, %rdx, 4)
  84.    
  85.     incl i(%rbp)
  86.     jmp for
  87. finefor:
  88.     leave
  89.     ret
  90.    
  91.    
  92.    
  93.    
  94. .global _ZN2clC1E3st1Pi
  95.  
  96. _ZN2clC1E3st1Pi:
  97.  
  98. #record di attivazione
  99.  
  100. #|  ar2[]   |-24
  101. #|i |s1 |-16
  102. #|  this    |-8
  103.  
  104. .set this, -8
  105. .set i, -12
  106. .set s1, -16
  107. .set ar2, -24
  108.  
  109.     pushq %rbp
  110.     movq %rsp, %rbp
  111.     subq $24, %rsp
  112.    
  113.     movq %rdi, this(%rbp)
  114.     movl %esi, s1(%rbp)
  115.     movq %rdx, ar2(%rbp)
  116.        
  117.     movl $0, i(%rbp)
  118. for1:
  119.     cmpl $4, i(%rbp)
  120.     jge finefor1
  121.    
  122.     movslq i(%rbp), %rcx
  123.     movq this(%rbp), %r8
  124.     movq ar2(%rbp), %r9
  125.        
  126.     movb s1(%rbp, %rcx), %al
  127.     movb %al, 4(%r8, %rcx)
  128.     subb $2, %al
  129.     movb %al, (%r8, %rcx)
  130.    
  131.     movl (%r9, %rcx, 4), %eax
  132.     movl %eax, 8(%r8, %rcx, 4)     
  133.            
  134.     incl i(%rbp)
  135.     jmp for1
  136. finefor1:
  137.     leave
  138.     ret
  139.    
  140.    
  141.    
  142. .global _ZN2cl5elab1EPc3st2
  143. #recor di attivazione
  144.  
  145. #|  p   |-72
  146. #|cla.v2|cla.v1 |-64
  147. #|  |cla.v3 |-56
  148. #|  |cla    |-48
  149. #|i |s1 |-40
  150. #|s2[1] |s2[0]  |-32
  151. #|s2[3] |s2[2]  |-24
  152. #|  ar1[]   |-16
  153. #|  this    |-8
  154.  
  155. _ZN2cl5elab1EPc3st2:
  156.  
  157. .set this, -8
  158. .set ar1, -16
  159. .set s2, -32
  160. .set s1, -40
  161. .set i, -36
  162. .set cla, -64
  163. .set p, -72
  164.  
  165.     pushq %rbp
  166.     movq %rsp, %rbp
  167.     subq $72, %rsp
  168.    
  169.     movq %rdi, p(%rbp)
  170.     movq %rsi, this(%rbp)
  171.     movq %rdx, ar1(%rbp)
  172.     movq %rcx, s2(%rbp)
  173.     movq %r8, s2+8(%rbp)
  174.        
  175.     movl $0, i(%rbp)
  176. for2:
  177.     cmpl $4, i(%rbp)
  178.     jge finefor2
  179.  
  180.     movslq i(%rbp), %rcx
  181.     movq this(%rbp), %r8
  182.     movq ar1(%rbp), %r9
  183.    
  184.     movb (%r9, %rcx), %al
  185.     movb %al, s1(%rbp, %rcx)
  186.    
  187.     leaq cla(%rbp), %rdi
  188.     movl s1(%rbp), %esi
  189.     call _ZN2clC1E3st1
  190.    
  191.     incl i(%rbp)
  192.     jmp for2
  193. finefor2:
  194.                
  195.     movl $0, i(%rbp)
  196. for3:
  197.     cmpl $4, i(%rbp)
  198.     jge finefor3
  199.  
  200.     movslq i(%rbp), %rcx
  201.     movq this(%rbp), %r8
  202.     leaq cla(%rbp), %r9
  203.    
  204.     movl s2(%rbp, %rcx, 4), %eax
  205.     movl %eax, 8(%r9, %rcx, 4)
  206.    
  207.     incl i(%rbp)
  208.     jmp for3
  209. finefor3:
  210.     leaq cla(%rbp), %rsi
  211.     movq p(%rbp), %rdi
  212.     movq $3, %rcx                    
  213.     rep movsq
  214.     movq p(%rbp), %rax
  215.    
  216.     leave
  217.     ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement