x86 동작 모드 문서의 검증 코드다. if __name__ == "__main__": 아래가 자체 테스트다.

"""x86 동작 모드 검증.

문서: 05.x86 동작 모드
주장:
  1. 주소가 20비트면 2^20 = 1,048,576바이트 = 1MB, 주소는 00000h ~ FFFFFh.
  2. 주소가 32비트면 2^32 = 4,294,967,296바이트 = 4GB, 주소는 00000000h ~ FFFFFFFFh.
  3. 4GB는 1MB의 4,096배다.
  4. 페이지 하나는 4,096바이트 = 2^12. 4GB는 1,048,576쪽이다.
  5. 카드: 24비트 주소면 16MB.
"""


def main():
    assert 2 ** 20 == 1_048_576 == 1024 * 1024
    assert 2 ** 20 - 1 == 0xFFFFF
    print("[OK] 20비트 주소: 1,048,576바이트 = 1MB, 끝 주소 FFFFFh")

    assert 2 ** 32 == 4_294_967_296 == 4 * 1024 ** 3
    assert 2 ** 32 - 1 == 0xFFFFFFFF
    print("[OK] 32비트 주소: 4GB, 끝 주소 FFFFFFFFh")

    assert 2 ** 32 // 2 ** 20 == 4096
    assert 4096 == 2 ** 12 and 2 ** 32 // 4096 == 1_048_576
    print("[OK] 4GB = 1MB × 4,096, 페이지 4,096바이트면 1,048,576쪽")

    assert 2 ** 24 == 16 * 1024 * 1024
    print("[OK] 카드: 24비트 주소 → 16MB")
    print("ALL CHECKS PASSED")


if __name__ == "__main__":
    main()