나는 한동안이 질문에 대해 생각하고있다. 언제 ARM7 (3 파이프 라인) 프로세서가 PC 레지스터를 늘릴 것인가?ARM7 프로세서는 언제 PC 레지스터를 늘립니까?
원래 명령이 실행 된 후 프로세서가 처음으로 검사했을 때 마지막 실행시 예외가있는 것으로 생각하고 현재 상태에 따라 PC를 2 또는 4 늘립니다. 예외가 발생하면 ARM7은 실행 모드를 변경하고 PC를 현재 모드의 LR에 저장하고 PC 레지스터를 수정하지 않고 현재 예외 처리를 시작합니다.
하지만 반환하는 지침을 분석 할 때는 의미가 없습니다. 프리 페치 - 중단 - 예외에서 LR-4가 발생하는 동안 정의되지 않은 명령어 예외에서 복귀 할 때 PC에 LR이 할당되는 이유를 알아낼 수 없지만 이러한 예외가 모두 디코딩 상태에서 발생하지는 않습니까? 또한 교과서에 따르면 예외가 발생하기 전에 프로세서가 어떤 상태 (ARM 또는 Thumb)에 관계없이 prefetch-abort-exception에서 복귀 할 때 항상 PC에 LR-4가 할당됩니다. 그러나 Thumb 명령어는 ARM 명령어가 보유하고있는 4 바이트 대신 2 바이트 길이이기 때문에 PC에 LR-2를 할당해야한다고 생각합니다. 현재 상태의 명령어를 롤백하고 싶습니다. . 제 추론에 결함이 있거나 교과서에 문제가 있습니까?
긴 질문입니다. 누구든지 내가 올바른 대답을 얻을 수 있도록 도와주기를 바랍니다.
미리 감사드립니다.
우수 답변. –