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

등록 2002-03-23 09:45:00     조회 4
이름 이민철    

		아 맞네요.
가장 중요한 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