Assembly Language & x86 Low-Level Systems Programming · Ders

Segmentasyon ve Global Tanımlayıcı Tablosu (GDT)

x86 segmentasyonunun sayfalama ile birlikte nasıl çalıştığını öğrenin: segment seçicileri, tanımlayıcılar, GDT ve düz bellek modellerinin korumalı kipin temelini nasıl oluşturduğunu keşfedin.

4. ders / 413 adım

Segmentasyon ve Global Tanımlayıcı Tablosu (GDT), CoddyKit'te ücretsiz bir Assembly Language & x86 Low-Level Systems Programming dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Assembly Language & x86 Low-Level Systems Programming öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Assembly Language & x86 Low-Level Systems Programming kursu toplamda 4 dersten oluşur.

Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.

What Is Segmentation?

Segmentation divides memory into variable-sized regions called segments, each with a base address, limit, and access rights. It predates paging and is the first translation step in x86 address generation.

Real Mode Segments

In 16-bit real mode, a physical address is computed as segment * 16 + offset. This gave access to 1 MB using 16-bit registers but offered no protection at all.

Protected Mode Selectors

In protected mode a segment register no longer holds a base directly. It holds a selector — an index into a descriptor table plus a privilege level and table indicator bit.

The Segment Descriptor

Each descriptor is 8 bytes and encodes:

  • Base (32-bit start address)
  • Limit (size of the segment)
  • Type (code, data, system)
  • DPL (descriptor privilege level 0-3)
  • Flags (granularity, default size)

The Global Descriptor Table

The GDT is an array of these descriptors in memory. The CPU finds it through the GDTR register, which holds the table base and limit. Entry 0 is always the null descriptor.

Loading the GDT

You point the CPU at your GDT with the lgdt instruction, which reads a 6-byte pseudo-descriptor (limit + base).

gdt_descriptor:
    dw gdt_end - gdt_start - 1   ; limit
    dd gdt_start                 ; base

lgdt [gdt_descriptor]            ; load GDTR

Defining a Flat Code Segment

Modern OSes use a flat model: base 0 and a 4 GB limit, so segmentation becomes a no-op and paging does the real work. Here is a typical code descriptor.

gdt_code:
    dw 0xFFFF      ; limit low
    dw 0x0000      ; base low
    db 0x00        ; base mid
    db 10011010b   ; present, ring 0, code, readable
    db 11001111b   ; granularity 4K, 32-bit, limit high
    db 0x00        ; base high

Activating Protected Mode

You enter protected mode by setting bit 0 (PE) of control register CR0, then performing a far jump to flush the prefetch queue and load CS with a protected-mode selector.

mov eax, cr0
or eax, 1          ; set PE bit
mov cr0, eax
jmp 0x08:pmode     ; far jump, 0x08 = code selector

Selectors in Practice

A selector like 0x08 breaks down as: index 1 (byte offset 8 / 8), table indicator 0 (GDT), requested privilege level 0. After the jump, data segment registers are loaded with the data selector (often 0x10).

Segmentation vs Paging Today

In long (64-bit) mode segmentation is largely disabled: base and limit are ignored for most segments. Protection and translation are handled by paging. Segmentation survives mainly for FS/GS base pointers used for thread-local storage.

Why It Still Matters

Even though the flat model neutralizes segmentation, every protected-mode and long-mode OS must set up a valid GDT to boot. Understanding selectors and descriptors is essential for kernel bring-up and exception handling.

Quick Check

Test your segmentation knowledge.

Recap

You learned x86 segmentation:

  • A selector indexes a descriptor in the GDT
  • Descriptors hold base, limit, type, and privilege level
  • lgdt loads the table; setting CR0.PE plus a far jump enters protected mode
  • The flat model neutralizes segmentation so paging does the work
Başlamak ücretsiz

Yapay zeka eğitmeniyle Assembly öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
12
Dersler
48

Sıkça Sorulan Sorular

“Segmentasyon ve Global Tanımlayıcı Tablosu (GDT)” dersi ücretsiz mi?

Evet — “Segmentasyon ve Global Tanımlayıcı Tablosu (GDT)” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Assembly Language & x86 Low-Level Systems Programming kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Assembly Language & x86 Low-Level Systems Programming kursu toplamda 4 dersten oluşur.

“Segmentasyon ve Global Tanımlayıcı Tablosu (GDT)” dersinde ne öğreneceğim?

x86 segmentasyonunun sayfalama ile birlikte nasıl çalıştığını öğrenin: segment seçicileri, tanımlayıcılar, GDT ve düz bellek modellerinin korumalı kipin temelini nasıl oluşturduğunu keşfedin. Assembly Language & x86 Low-Level Systems Programming ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Assembly Language & x86 Low-Level Systems Programming öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Assembly Language & x86 Low-Level Systems Programming, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Segmentasyon ve Global Tanımlayıcı Tablosu (GDT)” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Assembly Language & x86 Low-Level Systems Programming dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Assembly Language & x86 Low-Level Systems Programming dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Sayfalama ve Bellek Yönetim Birimi (MMU)
  2. Koruma Halkaları ve Ayrıcalıklar
  3. Hiper yöneticiler ve Sanallaştırmanın Temelleri
  4. Segmentasyon ve Global Tanımlayıcı Tablosu (GDT)
← Assembly Language & x86 Low-Level Systems Programming Sayfasına Dön