breakpoint read/write
은 어떻게 구현됩니까? 이는 breakpoint execute
과 다릅니다.PowerPC에서 중단 점 읽기/쓰기 구현
아이디어는 데이터 메모리 주소로 시작한 다음 해당 주소에서 읽고 쓰는 어셈블리 명령어를 찾는 것입니다. 이론적으로, 우리는 이것이 사실인지 알아 내기 위해 레지스터와 실행중인 다음 명령 (변위 오프셋을 고려)을 검사해야합니다. 현재 명령어가 "저장 단어"라고 가정하면 : stw r0, 4 (r31)
주소는 r31 + 4
에 기록됩니다. r31
의 값을 읽고 4
을 추가하고 이것이 초기 데이터 주소와 같은지 확인하여이 오류가 발생하는지 여부를 확인할 수 있습니다.
그러나 C 프로그래밍을 사용하면 어셈블리에서 모든 명령 실행을 모니터링 할 수 없기 때문에 이것은 믿을 수없는 것처럼 보입니다. 이 작업은 일반적으로 또는 PowerPC에 대해 어떻게 수행됩니까? 특별한 어셈블리 명령어 나 디버그 레지스터가 있습니까?
참으로 '디버그 레지스터'. 현대의 모든 사소한 프로세서에는 브레이크 포인트 등 하드웨어가 내장되어 있습니다. 다중 코어, 파이프 라이닝 및 기타 기능/최적화를 사용하면 디버깅을 어렵게하는 것이 필수적입니다. – ThingyWotsit