>> Edit article
이름
제목
패스워드
아 맞네요. 가장 중요한 mov 명령 두개가 빠졌네요 ^^ 그럼 즐프... : : 잘 기억이 나지 않아 정확한지는 모르겠지만 : : ((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