Ömer Özsipahi feature: C kernel
gdt.asm 1.2 KB
_gdt_start:
_gdt_null: ; gdt null segment descriptor. bunun koyulması zorunlu herhengi yanlış bir segment girildiğini işlemci buraya düşer.
dd 0x0
dd 0x0
_gdt_code: ; gdt code segment descriptor.
dw 0xffff ; GDT limit flag'i max değeri verdik ram'in tamamını kullanabilmek için
dw 0x0 ; GDT base değerleri ilki 16 bitlik yer kapladığı için dw olarak tanımladık ikincisi 8 bitlin yer kaplıyor. GDT'nin nerden başlayacağının
db 0x0 ; offset'ini tutar.
db 10011010b ; flag and type bitleri sondaki b binary olduğunu belirtmek için detaylı bilgi WritinOS.pdf page 36 <----|
db 11001111b ; ikinci flag bitleri --------------------------------------------------------------------------|
db 0x0 ; son base belirteci (intel mühendislerine götten. yapacakları segmentlemeyi sikim).
_gdt_data: ; gdt data segment descriptor
dw 0xffff
dw 0x0
db 0x0
db 10010010b ; first flags and type flags. first flags code segment ile aynı type flag'ler değişiyor sadece code flag'i farklı
db 11001111b ; second flag. code segment'i ile aynı
db 0x0
_gdt_end:
_gdt_descriptor:
dw _gdt_end - _gdt_start - 1
dd _gdt_start
CODE_SEG: equ _gdt_code - _gdt_start
DATA_SEG: equ _gdt_data - _gdt_start