64비트 기준
어셈
movslq i, %rdi
addq %rdi, (%rdx)
addb %sil, (%rcx)
movl $6, x
ret
c코드
*u = += a;
*v = += b;
return sizeof(a) + sizeof(b);
에서 결국 return값이 6이 찍힌다는거면 sizeofb는 16비트 = 2바이트란 소린가?
근데 addb %sli, (%rcx)에서 8비트만 옴기면..
아..... v가 1바이트고 b는 2바이트구나;; 쉬벌 쓰다보니 이해햇내
*u += a; 지 *u = +=a; 는 뭐임~
잘못쓴듯 ㅈㅅ;
그냥봐선 다 unsigned 고 u 는 unsigned long long v 는 unsigned char, a 는 unsigned int, b는 unsigned short 구만
부호확장을 하는데 unsigned?? movzlq를 써야되는거 아닌가??
아 movslq 못봄~ 미안 ㅋㅋ