8086 마이크로 프로세서에서 CS가 FFFFH이고 IP가 FAB0H라고 가정하면 물리적 메모리 주소는 CS에 16을 곱하고 IP를 더하여 계산됩니다. 즉 Add = FFFF0 + FAB0이 합계는 합계를 20 비트에 저장할 수 없기 때문에 오버플로를 제공합니다. 무슨 일이 일어날 것?
8086의 경우 결과는 20 비트에 맞게 잘립니다. 주위를 감싸게합니다. 예를 들면 0xFFFF0 + 0xFAB0 = 0x10FAA0 = 0xFAA0
. 1MiB 이상을 가리키는 세그먼트 주소는 실제로 처음 64KiB-16 바이트의 메모리에 액세스합니다.
최신 80x86 CPU (80286부터 시작)는 더 넓은 물리적 주소를 지원하고 잘리지 않습니다. 그러나 이전 버전과의 호환성을 유지하기 위해 "A20 게이트"가 비활성화 된 경우 21 번째 주소 비트 (A20)를 마스킹하기 위해 프로그래밍 가능한 "A20 게이트"(원래 CPU 외부에 있음)를 사용하여 이전 동작을 시뮬레이션했습니다. 따라서 "A20 게이트"가 활성화 된 최신 CPU의 경우 실제 모드에서 거의 0xFFFF:0xFFFF = 0x10FFEF
64KiB 더 많은 물리적 주소 공간에 액세스 할 수 있습니다 ( 원래 1MiB보다 최대 , 또는 65520 바이트 더 많음). 이를 High Memory Area라고합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다