>> Edit article
이름
제목
패스워드
: 잘 기억이 나지 않아 정확한지는 모르겠지만 : ((a)^=(b)^=(a)^=(b)) 의 경우 : xor a,b : xor b,a : xor a,b : 로 작동하겠지요 : a ^= b는 a와 b의 xor을 a에 대입하는 것이 아닙니다. : 그리고 만약 xor 명령어 자체가 메모리가 아닌 레지스터만으로 연산한다고 : 해도 (잘 기억이 안나서 정확히는 답변이 안되겠네요. 하지만 가물가물한 기 : 억으로는 dest 쪽만 레지스터이면 될껍니다) : mov eax, a : mov ebx, b : xor eax, ebx : xor ebx, eax : xor eax, ebx : : 요로코롬 되면 끝날겁니다. 음.. 그렇군요. 그리고 하나 더 해야 할 것이 mov a, eax mov b, ebx 를 추가 해야 될 것 같네요. : 아 그리고 정말 기억이 가물가물해서 맞는지도 잘 모르겠습니다만은... 어쨌 : 거나 xor이 mov보다는 명령 자체만으로도 속도가 더 빨랐던 것으로 기억납니 : 다. 그렇겠죠. 레지스터 내부의 연산은 (저두 기억이 가물가물) cpu 내부 클럭 한방으로 되겠지만 메모리와 레지스터 사이의 mov 명령의 경우에는 메모리 억세스하는 거나 버스 속도 등 여러가지 문제 때문에 몇 클럭이 소모될 거 같습니다. 그런데 컴파일러가 어셈블 코드처럼 최적화하여 기계어로 바꾸는지 모르겠네요. 이런 거 보면 역시 어셈블리어가 참 재미난 구석이 많습니다. -- -----
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved