테스트 용지에이 질문이 있습니다. 어느 주소 지정 모드가 더 빠릅니까? 왜?등록 주소 지정 모드 대 직접 주소 지정 모드
- 레지스터 어드레싱 모드
- 직접 어드레싱 모드
이제 나를에 따라 레지스터는 컴퓨터에서 가장 빠른 메모리 위치이기 때문에 빠르게 처리 될 수 어드레싱 모드 등록합니다. 이것이 올바른 대답입니까?
도와주세요. 감사합니다
테스트 용지에이 질문이 있습니다. 어느 주소 지정 모드가 더 빠릅니까? 왜?등록 주소 지정 모드 대 직접 주소 지정 모드
이제 나를에 따라 레지스터는 컴퓨터에서 가장 빠른 메모리 위치이기 때문에 빠르게 처리 될 수 어드레싱 모드 등록합니다. 이것이 올바른 대답입니까?
도와주세요. 감사합니다
레지스터 액세스가 가장 빠릅니다. 그러나 액세스중인 메모리 데이터가 이미 CPU의 데이터 캐시에 있으면 메모리 액세스 속도가 빨라질 수 있습니다.
두 주소 지정 모드의 차이점은 ... 주소의 원본 ... 직접 주소 지정 모드의 경우 액세스 할 항목의 주소가 명령에 즉시 인코딩되므로 명령이 더 큽니다. 어떤 경우는 훨씬 더 클 수 있기 때문에 액세스하는데 더 많은 클록 사이클이 필요합니다. 이상적으로는 opcode 바로 다음의 바이트이므로 캐시에 있고 opcode를 가져 오면 일반적으로 그 뒤에있는 캐시 라인이 페치됩니다. 가장 오래된 x86 플랫폼은 명령의 나머지 부분과 다음 몇 가지/많은 명령어가 이미 가져오고 파이프에 있지 않은 상태에서 명령어를 어디에서 실행하는지 알지 못합니다. 오래된 x86 프로세서조차도 어느정도 크기의 프리 페치 큐를 가지고있었습니다.
레지스터 주소 지정은 액세스중인 항목의 주소가 레지스터에 있음을 의미합니다. 주소가 이미 있다고 가정하면 더 큰 명령, 여분의 사이클, 더 많은 캐시 라인이 명령을 위해 구워지지 않기 때문에 더 빠릅니다. 이 인수에주의해야하는 곳은 예를 들어 직전 명령이 직접 주소를 레지스터에로드하는 것입니다.
mov ax,[1000h]
mov ax,[bx]
두번째 인해 명령 크기 (이 레벨에 비교 될 수 것들을) 제보다 빠른 추가적인 캐시 연소 사이클이 소요. 전체가 페치 (비교 될 수있는 것들에 대해) 수행 적은 사이클을 필요하기 때문에, 직접 어드레싱
mov ax,[1000h]
mov bx,1000h
mov ax,[bx]
BUT
가 빠르다.비교할 수있는 것은 무엇을 의미합니까? 주소 지정 모드는 주소가 FROM에서 오는 위치와 관련이 있습니다. 그 명령을 EXECUTE하고 메모리 사이클을 수행하기 시작하면 두 개가 같아집니다. 두 개는 데이터 크기가 동일하다는 것을 비교하기 위해 버스의 주소입니다. 그 테스트 프로그램에서 데이터가 항상 데이터 캐시에 항상 존재하기 때문에 직접 테스트하는 것이 더 쉽습니다. 테스트 프로그램의 경우 레지스터 주소 지정 버전이 그렇지 않거나 때로는 그렇지 않습니다. 따라서 두 명령어 사이에서 비교할 수있는 사항은 명령어의 크기이며, 이는 사이클과 캐시 라인에 연결됩니다. 하나의 캐시 라인은 많은 레지스터 기반 명령어를 보유 할 수 있지만 몇 가지 직접/즉각 기반 명령어 만 포함 할 수 있으므로 직접/즉시를 사용하면 프로그램을 실행할 때 기회 비용이 발생하고 전체 메모리 사이클이 늘어납니다. 예, 이러한 순환의 대부분은 원격으로 현대적으로 진행됩니다.
이러한 유형의 질문은 지침 집합을 이해하는지 여부와 얼마나 많은 세부 사항을 반환 하느냐에 따라 실제 비용이 무엇인지 이상의 사실을 이해하는지 여부와 관계가 있습니다. 마찬가지로 경험이 없으면 단순히 실험을 시도해도 실패 할 수도 있고 캐시 주위에서 실험을해야하므로 차이가 없을 수도 있습니다.
은 내가보기 엔 마이클 애 브라시
NOT 하나가 불완전하다는 큰 검은 그래픽 프로그래밍 책과 함께 제공되는 무료 하나 책 어셈블리 언어의 선을 추천합니다. 사용한 사본을 좋은 모양으로 얻을 수 있습니다 (두 번째 책을 사서 상점에서 구입하여 책장에 살았던 원본보다 낫습니다). 8088과 8086에 대한 세부 사항은 책이 인쇄 될 때 구식이었습니다. 책의 중요성은 중요하지 않습니다. 중요성을 공격하는 방법을 이해하고, 문제를 생각하고 기본적인 통찰력을 얻는 방법 뒤에서 계속됩니다. 그것은 오늘날 훨씬 더 복잡하며 여전히 이해할 수 있지만, 오늘 본 내용으로 뛰어 들기 전에 이런 기초부터 시작하는 것이 좋습니다. x86을 가진 Esp (나는 버스, 캐싱 등을보기 시작할 때 x86보다는 우선 뭔가를 배우는 것이 좋습니다.). http://github.com/dwelch67/amber_samples. 나는 청소하고 앰버 프로세서 (arm2 복제본)를 오픈 소스 도구를 사용하여 사용 가능하게 만들어 프로세서 내부에서 실행되는 것을 볼 수 있습니다. 호박의 한 버전에는 캐시가 있습니다. 다시 한 번 디딤돌, mmus 및 멀티 코어 추가 등은 복잡성을 증가시킵니다.
직접적인 주소 지정은 두 명령어 만 서로 비교할 때 레지스터 주소 지정보다 더 긴 명령어를 사용하여 인코딩합니다. 메모리 부작용, 캐싱 등으로 인해 차이를 혼동하거나 중화시킬 수 있습니다.
OTOH, 레지스터 주소를 바꾸는 것이 더 빠를 수 있기 때문에 – hirschhornsalz
이라는 이름으로 등록 할 수 있습니다. 또한 직접 부여한 직접 값이 주 메모리에 저장된다는 것을 알면 매우 감사 할 것입니다. –
첫 번째 검색 조회수 : [1] (http://www.cs.nmsu.edu/~pfeiffer/classes/273/notes/immdirext.html), [2] (http://en.wikipedia.org/wiki /Addressing_mode#Absolute.2FDirect). –