>> Delete Reply from No. 0 article
No. RE: RE: RE: RE: RE: 그 다음에...

등록 2002-03-23 07:08:00     조회 4
이름 @.@    

		: 잘 기억이 나지 않아 정확한지는 모르겠지만
: ((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