Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 2014-02-09
- #include <iostream>
- using namespace std;
- struct st1 { char vi[4]; };
- struct st2 { int vd[4]; };
- class cl {
- char v1[4]; char v2[4]; int v3[4];
- public:
- cl(st1 ss); cl(st1 s1, int ar2[]);
- cl xxx(char ar1[], st2 s2);
- void stampa() {
- char i;
- for (i=0;i<4;i++) cout << (int)v1[i] << ' '; cout << endl;
- for (i=0;i<4;i++) cout << (int)v2[i] << ' '; cout << endl;
- for (i=0;i<4;i++) cout << v3[i] << ' '; cout << endl << endl;
- }
- };
- #include "cc.h"
- cl::cl(st1 ss)
- { for (int i=0; i<4; i++)
- { v1[i] = ss.vi[i]; v2[i] = ss.vi[i]; v3[3-i] = ss.vi[i]+ss.vi[i]; }
- }
- cl::cl(st1 s1, int ar2[])
- { for (int i=0; i<4; i++)
- { v1[i] = s1.vi[i]-2; v2[i] = s1.vi[i]; v3[i] = ar2[i]; }
- }
- cl cl::xxx(char ar1[], st2 s2)
- { st1 s1; for (int i=0;i<4;i++) s1.vi[i]=ar1[i];
- cl cla(s1);
- for (int i=0;i<4;i++) cla.v3[i] = s2.vd[i];
- return cla;
- }
- SOLUZIONE
- .text
- .global _ZN2clC1E3st1
- _ZN2clC1E3st1:
- #record di attivazione
- #|i |ss |-16
- #| this |-8
- .set this, -8
- .set i, -12
- .set ss, -16
- pushq %rbp
- movq %rsp, %rbp
- subq $16, %rsp
- movq %rdi, this(%rbp)
- movl %esi, ss(%rbp)
- movl $0, i(%rbp)
- for:
- cmpl $4, i(%rbp)
- jge finefor
- movslq i(%rbp), %rcx
- movq this(%rbp), %r8
- movb ss(%rbp, %rcx), %al
- movb %al, (%r8, %rcx)
- movb %al, 4(%r8, %rcx)
- movsbl %al, %eax
- addl %eax, %eax
- movq $3, %rdx
- subq %rcx, %rdx #si può fare?
- movl %eax, 8(%r8, %rdx, 4)
- incl i(%rbp)
- jmp for
- finefor:
- leave
- ret
- .global _ZN2clC1E3st1Pi
- _ZN2clC1E3st1Pi:
- #record di attivazione
- #| ar2[] |-24
- #|i |s1 |-16
- #| this |-8
- .set this, -8
- .set i, -12
- .set s1, -16
- .set ar2, -24
- pushq %rbp
- movq %rsp, %rbp
- subq $24, %rsp
- movq %rdi, this(%rbp)
- movl %esi, s1(%rbp)
- movq %rdx, ar2(%rbp)
- movl $0, i(%rbp)
- for1:
- cmpl $4, i(%rbp)
- jge finefor1
- movslq i(%rbp), %rcx
- movq this(%rbp), %r8
- movq ar2(%rbp), %r9
- movb s1(%rbp, %rcx), %al
- movb %al, 4(%r8, %rcx)
- subb $2, %al
- movb %al, (%r8, %rcx)
- movl (%r9, %rcx, 4), %eax
- movl %eax, 8(%r8, %rcx, 4)
- incl i(%rbp)
- jmp for1
- finefor1:
- leave
- ret
- .global _ZN2cl5elab1EPc3st2
- #recor di attivazione
- #| p |-72
- #|cla.v2|cla.v1 |-64
- #| |cla.v3 |-56
- #| |cla |-48
- #|i |s1 |-40
- #|s2[1] |s2[0] |-32
- #|s2[3] |s2[2] |-24
- #| ar1[] |-16
- #| this |-8
- _ZN2cl5elab1EPc3st2:
- .set this, -8
- .set ar1, -16
- .set s2, -32
- .set s1, -40
- .set i, -36
- .set cla, -64
- .set p, -72
- pushq %rbp
- movq %rsp, %rbp
- subq $72, %rsp
- movq %rdi, p(%rbp)
- movq %rsi, this(%rbp)
- movq %rdx, ar1(%rbp)
- movq %rcx, s2(%rbp)
- movq %r8, s2+8(%rbp)
- movl $0, i(%rbp)
- for2:
- cmpl $4, i(%rbp)
- jge finefor2
- movslq i(%rbp), %rcx
- movq this(%rbp), %r8
- movq ar1(%rbp), %r9
- movb (%r9, %rcx), %al
- movb %al, s1(%rbp, %rcx)
- leaq cla(%rbp), %rdi
- movl s1(%rbp), %esi
- call _ZN2clC1E3st1
- incl i(%rbp)
- jmp for2
- finefor2:
- movl $0, i(%rbp)
- for3:
- cmpl $4, i(%rbp)
- jge finefor3
- movslq i(%rbp), %rcx
- movq this(%rbp), %r8
- leaq cla(%rbp), %r9
- movl s2(%rbp, %rcx, 4), %eax
- movl %eax, 8(%r9, %rcx, 4)
- incl i(%rbp)
- jmp for3
- finefor3:
- leaq cla(%rbp), %rsi
- movq p(%rbp), %rdi
- movq $3, %rcx
- rep movsq
- movq p(%rbp), %rax
- leave
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement