Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Nice to meet you all. For those who don’t know me, I’m a low-level developer with daily experience in OS development (OSDev). I’ve recently stepped away from legacy-style development to explore modern OSDev practices, and I’ve run into a challenge I haven’t been able to solve yet: the IDT (Interrupt Descriptor Table). I’ve searched through various resources—including OSDev-specific materials and the Intel manuals—but I’m still struggling to find the information I need. I’d prefer not to rely on AI for the answer; could someone provide me with some guidance on this?
sources:
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3 (3A, 3B, 3C & 3D): System Programming Guide, April 2022
Honestly, I would appreciate it if anyone could help me. Making this change is a huge challenge for me, but it’s something new, and I want to learn about 64-bit IDTs.
Hello, thanks for your response. I need some help with turning that theory into code—I’m not sure what the next steps should be. I’ve already created the `struct`, but now I’m stuck and don’t know how to proceed.
icr09 wrote: ↑Fri Oct 23, 2026 3:29 am
Hello, thanks for your response. I need some help with turning that theory into code—I’m not sure what the next steps should be. I’ve already created the `struct`, but now I’m stuck and don’t know how to proceed.
Read the SDM, and write some assembler. You already have the struct and how it should work. The SDM defines everything the CPU should be able to do. You could also just follow the IDT tutorial, its public domain so its safe to use, no attribution.
icr09 wrote: ↑Fri Oct 23, 2026 3:29 amI’ve already created the `struct`, but now I’m stuck and don’t know how to proceed.
That struct is an IDT entry. An IDT is an array of (usually) 256 IDT entries. You need to create that array, fill each entry with appropriate values, and tell the CPU your array is an IDT with the LIDT instruction.