문제가 C 코드를 어셈블리로 바꾸는 건데


int *ip; char *cp; *cp = (char) *ip;


%rdi = ip, %rsi = cp


내가 생각하기엔 이게 밑에 어셈블리로 되어야 한다 생각하거든


movb (%rdi), %al movb %al, (%rsi)


(AT&T임 ㅈㅅ)


근데 답은 이러네


movl (%rdi), %eax movb %al, (%rsi)


어떻게 작동하는진 알겠는데 결국엔 내가 생각한 거랑 차이 없지 않나?


설령 movl 해서 %rax 의 상위 32비트가 지워진다 해도 mov 이후에 (%rsi) 의 값은 같을 거 아냐


---변경---

c 코드 누락 부분 추가