I added three more commands
-
memorymapcommand reads memorymap which was stored at0x20000-
There are three columns starting from base, limit, and type
-
type 1 means free memory and type 2 to 4 are unavailable memory
-
-
accesscommand tries to write and read memory at specific address-
first parameter memory address in hex or decimal
-
address in hex starts with
0xand its unit isbyte -
address in decimal starts with just number and its unit is
MB
-
-
bannercommand print MINT64OS text string like ascii art
-
Mint64OS's page tree allows to access up to 64GB linear address. If you try to access above 64GB, then you will see page fault exception
-
accessing reserved memory region is not predictable. Sometimes, page fault exception cones up or in worst case, it causes reboot
-
Memory Layout up to CH15
- start(inclusive) ~ end(exclusive)
- 0x00000 ~ 0x00400 (Interrupt Vector Table for real mode)
- 0x07C00 ~ 0x07E00 (Bootloader)
- 0x07E00 ~ 0x10000 (Stack for real mode and protected mode)
- 0x10000 ~ ... (32 bit code of OS; EntryPoint.S + Main.c + ...)
- 0x20000 ~ 0x20004 (number of memory map entries)
- 0x20004 ~ ... (memory map entires)
- 0xA0000 ~ ... (video memory for graphic mode)
- 0xB8000 ~ ... (video memory for text mode)
- 0x100000(1MB) ~ 0x142000 (IA-32 mode page table tree structure, 264KB)
- 0x142000 ~ 0x142010 (GDTR, 16 bytes)
- 0x142010 ~ 0x142038 (GDT, 40 bytes = 3 * 8 bytes + 1 * 16 bytes)
- 0x142038 ~ 0x1420A0 (TSS, 104 bytes = 1 * 104 bytes)
- 0x1420A0 ~ 0x1420B0 (IDTR, 16 bytes)
- 0x1420B0 ~ 0x1426F0 (IDT, 1600 bytes = 100 * 16 bytes)
- 0x200000(2MB) ~ ... (64 bit code of OS; EntryPoint.S + Main.c + ...)
- 0x600000(6MB) ~ 0x700000(7MB) (Stack for long mode)
- 0x700000(7MB) ~ 0x800000(8MB) (IST1 stack area)