페이징시 어셈블리 pop오류 질문입니다.

글쓴이: 익명 사용자 / 작성시간: 목, 2017/10/19 - 8:28오전
가상메모리가 0xC0000000(3GB)에서 시작하는 OS에서
cr0레지스터를 바꿔서 페이징을 불가능하게 만드려고 합니다.
실행 마지막에 pop ebp에서 push 한 ebp가 아닌 쓰레기 값이 호출되어 프로그램이 정지하는데,
페이징이 불가능하게 된 후, 가상메모리주소의 ebp를 사용하려고 그러는 게 아닐까 싶습니다.
cr0레지스터 쓰기함수(write_cr0)를 고치지 않고 프로그램이 제대로 돌아가도록 할 수는 없을까요?
File attachments:
첨부 | 파일 크기 |
---|---|
![]() | 110.59 KB |
Forums:
질문자와 동일인입니다.
좀 더 깔끔한 방법이 있었으면 좋았겠지만 일단
인라인 어셈블리로 미리 해당하는 레지스터들을 바꾸어 해결했습니다.
댓글 달기