if TI == 0 :
return GDT
elif TI == 1 :
return LDT
선형주소: 0x00402001
이진수 : 00000000010000000010000000000001
| DIRECTORY INDEX (10bit) | TABLE INDEX (10bit) | OFFSET (12bit) |
| 0000000001 | 0000000010 | 000000000001 |
| 1 | 2 | 1 |
CR3(PAGE DIRECTORY BASE REGISTER) -> PAGE DIRECTORY BASE ADDRESS == 0x12347xxx -> PAGE DIRECTORY == PAGE A
DIRECTORY INDEX == 1 -> PAGE A[1] == 0x12346xxx -> PAGE TABLE BASE ADDRESS == 0x12346 * 0x1000 == 0x12346000 -> PAGE TABLE == PAGE B
TABLE INDEX == 2 -> PAGE B[2] == 0x12345xxx -> PAGE BASE ADDRESS == 0x12345 * 0x1000 == 0x12345000 -> PAGE == PAGE C
최종적으로 참조되는 메모리의 시작주소는 &PAGE C[1(OFFSET)] == 0x12345004
최종적으로 참조되는 메모리의 내용은 PAGE C[1(OFFSET)] == 0x12344xxx
RPL, CPL, DPL https://stackoverflow.com/questions/36617718/difference-between-dpl-and-rpl-in-x86