2009-12-14 3 views
6

This article 주장, 인텔 레지스터를 "의도 된 목적"으로 사용하면 효율성이 향상됩니까? 각 레지스터가 더 중요 의도 된 목적을 가지고 있으며,

인텔의 엔지니어는 원래 8086 프로세서 설계

, 그들은 각 레지스터 마음에 특별한 목적을 가지고 있었다. 그들은 명령어 세트를 설계 할 때 개의 최적화 및 특수 명령어 을 만들었습니다.이 명령어는 각각의 레지스터가 수행 할 수있는 기능을 기반으로합니다. Intel의 독창적 인 계획에 따라 레지스터를 사용하면 코드가 의 이러한 최적화를 최대한 활용할 수 있습니다. 아쉽게도 이것은 분실 된 예술로 보입니다. 일부 부호기는 인텔의 전체 설계를 인식하고 있으며 대부분의 컴파일러는 너무 단순하거나 레지스터 을 사용하기 위해 실행 속도가 에 집중되어 있습니다. 그러나 레지스터 및 명령어 세트를 함께 이해하는 방법은 을 함께 사용하는 것이므로 단계는 중요하지 않으므로 크기 코딩이 필요합니다.

이 기사를 뒷받침 할만한 다른 출처가 있습니까? 그렇다면 실제로 확인하고 싶습니다. 거기에 내가 대신 ecx의 카운터로 eaxesi를 사용하는 경우 성능 저하 또는 그냥 가독성에 대한 경우 난 그냥 궁금 해서요 -

STOS 같은 빠른 작업이 edi를 사용하여 어디 상황에 대해 이야기하고 있지 않다 유의하시기 바랍니다?

답변

4

아니오, 실제로는 더 이상 - 또는 적어도 어쨌든별로 자주는 아닙니다. ECX를 카운터로 사용하면 LOOP 명령어를 사용할 수 있습니다. 한때는 상당한 이점 이었지만 최근의 CPU에서는 DEC ECX/JNZ의 조합보다 LOOP가 더 오래 실행됩니다. 가능한 이점은 병목 현상이 점점 더 자주 발생하는 메모리 대역폭 사용량을 줄이는 것입니다. LOOPNZ와 같은 다른 형식을 사용할 수있는 경우에도 이점이 있습니다. LOOPNZ는 상대적으로 복잡하여 별도의 지침으로 시뮬레이션 할 수 있습니다.

5

명령어 세트에는 특정 레지스터를 대상으로하는 명령어가 있으며, 이는 특정 레지스터를 대상으로하는 해당 기능보다 크기가 작고 (종종 빠릅니다)

+2

특히 AX와 다른 것에 대한 언급이 가장 두드러집니다. –