2011-09-02 2 views
1

Windows에서 어셈블리로 프로그래밍 할 때 - Visual Studio 내의 .cpp 파일에있는 인라인 어셈블리 - 개발 환경이 저의 어리석은 실수로부터 나를 보호합니다. 서브 루틴이 종료 될 때 ESP 레지스터를 훼손하면 특정 일이 발생했음을 알 수 있지만 그렇지 않으면 햇빛이 계속 남아 있습니다. 주의를 기울이지 않고 코드가 잘못된 메모리 위치에 쓰게 될 때 충돌하는 것은 내 프로그램뿐입니다. 잠시 후 바로 편집 할 수 있습니다. DOS에서 이러한 오류는 항상 다시 부팅해야합니다.DOS에서 ASM을 개발하기위한 "Safety net"유틸리티 (또는 트릭)?

나는 많은 이유가 Windows가 DOS (가상/보호 모드 대 리얼 모드)와 다른 메모리 모델을 가지고 있기 때문에 크래시가 자주 발생하는 Windows 프로그램이 거의 손상을 입지 않는 이유라고 생각합니다. 그들 자신의 실행 영역.

그러나 전 DOS 환경의 가능성을 줄이는 실행 가능한 실행 파일을위한 일종의 안전망 역할을하는 DOS 유틸리티가 존재하거나 과거 또는 현재 존재했는지 궁금합니다. 자체 또는 최소한 DOS를 실행하는 에뮬레이터)가 낮은 수준의 개발자 오류로 인해 멈추는 지 확인하십시오.

+0

DOS로 ASM을 시작하지 않고 문제를 해결할 수 있습니다. P, DOS는 QDOS를 재 작성한 것일 뿐이며 많은 것을 필요로하지 않았습니다. 당신이 망쳐 버린다면 전체 OS를 재부팅해야한다면 잠시 후 실수를 줄이기위한 한 가지 일이 있습니다. –

답변

0

DOS에서 보호 모드 래퍼를 시작하는 DOS/4G, DOS/32 등 32 비트 DOS Extender를 염두에두고 프로그램을 작성할 수 있습니다. 적어도 잘못된 명령과 대부분의 메모리 오류를 catch하고 예외 처리기 보고서를 출력 한 다음 DOS 셸로 되돌릴 수 있습니다.

여전히 많은 DOS/BIOS 인터럽트 기능을 사용할 수 있지만 실제로는 16 비트 프로그램이 아닌 32 비트 프로그램을 작성하게됩니다.