summaryrefslogtreecommitdiff
path: root/3/7_procedures/33_procprob.c
blob: 4c68855b278e0afe5ec556b1f253d6ed1fc5d96a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//  procprob
//      movslq  %edi, %rdi      movslq==Move and sign extend 32bit to 64bit two's complement number,
//                                      Basically seems to convert the first signed argument to 64bit size.
//                                      A singed 32bit number is an int?
//      addq    %rdi, (%rdx)    *u <- (long) u + (long) a
//      addb    %sil, (%rcx)    *v <- (char) *v + (?) b
//      movl    $6, %eax        sizeof(a) + sizeof(b) = 6 = 4 + 2
//
//  procprob
//      movslq  %edi, %rdi      movslq==Move and sign extend 32bit to 64bit two's complement number,
//                                      Basically seems to convert the first signed argument to 64bit size.
//                                      A singed 32bit number is an int?
//      addq    %rdi, (%rdx)    *u <- (long) u + (long) a
//      addb    %sil, (%rcx)    *v <- (char) *v + (?) b
//      movl    $6, %eax        sizeof(a) + sizeof(b) = 6 = 2 + 4
//
int procprob(int a, short b, long *u, char *v) {
    *u += a;
    *v += b;
    return sizeof(b) + sizeof(b)
}