5
지난 학기에 컴퓨터 공학 시험에 관한 정보를 얻었습니다. "MASM의 DIV EDX가 항상 프로세서 예외를 생성하는 이유는 무엇입니까?"
예외를 생성하는 메커니즘은 무엇입니까?MASM의 "DIV EDX"가 항상 프로세서 예외를 생성하는 이유는 무엇입니까?
지난 학기에 컴퓨터 공학 시험에 관한 정보를 얻었습니다. "MASM의 DIV EDX가 항상 프로세서 예외를 생성하는 이유는 무엇입니까?"
예외를 생성하는 메커니즘은 무엇입니까?MASM의 "DIV EDX"가 항상 프로세서 예외를 생성하는 이유는 무엇입니까?
x86 CPU에서 1 피연산자 나누기를 수행하면 EDX : EAX (64 비트)가 첫 번째 피연산자 (32 비트)로 나뉩니다. 결과는 EAX (32 비트)에 저장됩니다.
그래서 EDX : EAX by EDX로 나누면 근본적으로 (EDX * 0x100000000 + EAX)/EDX가되며 결과는 항상 0x100000000 이상이며 대상 레지스터에 맞지 않거나 제수는 0입니다. 두 경우 모두 나누기 예외가 발생합니다.
도 참조하십시오. this page (인텔 개발자 설명서에서 제공).
이 정보는 어셈블러 (MASM)에만 해당되는 것이 아니라이 경우 플랫폼에 해당합니다.
MASM, btw와 아무런 관련이 없습니다. 그리고 메커니즘은 CPU입니다. –