Far jump in gdt in bootloader
问题 flush_gdt: lgdt [gdtr] jmp 0x08:complete_flush complete_flush: mov ax, 0x10 mov ds, ax mov es, ax mov fs, ax mov gs, ax mov ss, ax ret I am unable to understand what this code does . flush_gdt is a label okay , then lgdt [gdtr] loads the 48-bit pointer in gdtr register and after that from jmp 0x08:complet_flush . What does jmp instruction do ? and then why are we moving 0x10 to ax and then subsequently to other registers 回答1: x86 supports two virtual memory schemes (read about it here):