- 무슨
rep; nop
뜻이야? pause
지시 와 같은가요 ?rep nop
(세미콜론 제외) 와 동일 합니까?- 간단한
nop
지시 와 다른 점은 무엇입니까 ? - AMD 및 Intel 프로세서에서 다르게 작동합니까?
- (보너스)이 지침에 대한 공식 문서는 어디에 있습니까?
이 질문에 대한 동기
다른 질문 에 대한 의견에 대한 토론을 한 후 rep; nop;
x86 (또는 x86-64) 어셈블리에서 의미하는 바를 모르겠다는 것을 깨달았습니다 . 또한 웹에서 좋은 설명을 찾을 수 없었습니다.
나는 이것이 "다음 명령 시간 반복"rep
을 의미하는 접두사라는 것을 알고 있습니다 (또는 적어도 이전 16 비트 x86 어셈블리에서는 그렇습니다). 이에 따라 위키 백과에서 요약 테이블 , 그것은 보인다 에만 사용할 수 있습니다 , , , , (하지만 어쩌면 이러한 제한은 새로운 프로세서에서 제거). 따라서 (세미콜론없이) 작업 시간을 반복 할 것이라고 생각 합니다.cx
rep
movs
stos
cmps
lods
scas
rep nop
nop
cx
하지만 더 찾아 보니 더 혼란스러워졌습니다. 것으로 보인다 rep; nop
와 pause
정확히 같은 연산 코드에 매핑 하고, pause
단지보다 약간 다른 동작이 있습니다 nop
. 2005 년의 일부 오래된 메일에는 다음과 같은 내용이 있습니다.
- "너무 많은 전력을 태우지 마십시오"
- "2 바이트 인코딩만으로 'nop'와 동일합니다."
- "이는 인텔의 마법입니다. '아니지만 다른 HT 형제가 실행되도록 놔두세요'와 같습니다."
- "인텔에서는 일시 중지되고 Athlon에서는 빠른 패딩입니다."
이렇게 다른 의견으로는 정확한 의미를 이해할 수 없었습니다.
다음 주석과 함께 Linux 커널 ( i386 및 x86_64 모두에서 )에서 사용되고 있습니다. 동일한 주석과 함께 BeRTOS/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
에서도 사용되고 있습니다.