충돌 지침 (액세스 위반이 발생합니다 다음 중 하나) :FS 레지스터 액세스 위반 7
LODS BYTE PTR FS:[ESI]
LODS WORD PTR FS:[ESI]
LODS DWORD PTR FS:[ESI]
나는 포트에 Windows 95 게임을 시도하는 클라이언트하지만 같은 충돌을 해결하기 위해 노력하고있다 사용할 수있는 소스 코드가 없습니다. 현재 어셈블리에서 디버깅 중입니다. 이 응용 프로그램은 Windows 7에서는 자주 발생하지만 임의로 충돌하지만 Windows XP에서는 정상적으로 작동합니다. 디버깅은 액세스 위반을 나타내며 FS 레지스터에 액세스하려고 할 때 발생합니다.
XP와 Windows 7 모두에서 디버깅 및 비교 작업을 수행했으며 ESI를 사용하여 FS 레지스터에 액세스 할 때 주소가 Windows 7에서 항상 범위를 벗어나기 때문에 액세스 위반이 발생한다는 사실을 발견했습니다. 또한 SEH 예외 처리기 어셈블리 코드 만 액세스 위반이도 발생 FS를 읽을 때 : [0] (데이터를 알 수 없음으로 표시됩니다이) :
PUSHAD PUSH 004DE918 MOV EAX,DWORD PTR FS:[0] PUSH EAX
응용 프로그램이 레지스터 손상의 원인이 될 수 있지만, 무엇의 원인이 될 수 이 문제는 Windows 7에서만 발생하지만 XP에서는 발생하지 않습니다. Windows 7에서 53의 다른 FS 레지스터 선택기가이 작업과 관련이 있습니까? 시도해 볼만한 제안이나 해결책이 있습니까?
감사합니다.
WinXP 호환 모드에서 앱을 실행하는 것은 어떻습니까? 아니면 XP 모드 (Win7에서 XP VM)에서? –
나는 다른 호환성 설정을 시도했지만 충돌은 여전히 발생합니다. – Atuyo
XP 모드로 알려진 XP VM조차도? –