dest_t transform(src_t *s, dest_t *d)
   {
  
     *d = (dest_t)*s;
  
     return *d;
   }



src_t : char, dest_t : unsigned이고

어셈블리는 아래처럼 찍히는데요.


transform:
    movsbl    (%rdi), x
    movl    x, (%rsi)
    ret


왜 최상위비트로 상위비트를 채우는 movs로 하는거죠?

unsigned면 최상위비트가 1이면 안되지않나요. 저렇게하면 56비트가 1로 찍힐수도 있잖아요.

unsigned나 signed는 비트표현을 해석하는 방법의 차이라지만 그래도 없던 비트를 찍어내는게 맞는건가요?