Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > comp.lang.c > #390570
| From | Ar Rakin <rakinar2@onesoftnet.eu.org> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: [OSDev] How to switch to long mode in x86 CPUs? |
| Date | 2025-02-28 22:30 +0600 |
| Organization | OSN Developers |
| Message-ID | <875xkughgw.fsf@onesoftnet.eu.org> (permalink) |
| References | <871pvje5yq.fsf@onesoftnet.eu.org> <vprtt6$3jah9$1@dont-email.me> |
On 28 Feb 2025 09:59, David Brown <david.brown@hesbynett.no> wrote: > On 27/02/2025 16:57, Ar Rakin wrote: >> Hello there, >> I am trying to develop my own, simple operating system to learn more >> about how kernels work and low level stuff like that. However, I am >> stuck at setting up paging while switching long mode (64-bit protected >> mode) in x86 processors. >> > > Are you trying to learn about OS kernels, or about the complexities of > low-level x86 stuff? Those are different things. I am just trying to learn about OS kernels, by building one. > If you want to learn about how operating systems work, you might > consider starting on microcontrollers. There are lots of RTOS's > available to study, and it is much easier to understand what is going > on - there is none of the multi-layered disaster of x86 modes to deal > with. > > Once you are happy with threads, context switches, locks, priorities, > and all the rest of that stuff, you can start moving up and adding > features for MMU's, SMP, and more, using bigger target processors. I actually wanted to build a simple kernel that would run specifically on x86_64 systems. I understand why you are recommending me to learn about microcontrollers first, but at the moment I am almost done with what I wanted to achieve - I just need to fix the paging issue I described earlier. > On the other hand, if you are interested in learning the intricacies > of the x86 world, you need to look elsewhere for information - as > Keith says, it is not really C related when you are writing > assembly. comp.arch might be a helpful group. Looks like comp.arch might be the group I needed to find! Thanks. > However, it is possible to use C for almost all code here. But it > will not be standard C - it is not even standard free-standing C. You > will make use of compiler extensions, bits of inline assembly, > pre-main C code (so none of the library will be initialised, and > program-lifetime data will not be set up), and other such highly > non-portable code. I remember reading once about LinuxBIOS (now > coreboot) having just four lines of assembly running out of reset, > before everything else was in C. That is true, I could have just used C. Even articles on the osdev.org website heavily use C, for stuff like setting up the Global Descriptor Table (GDT), which I prefer to do in assembly because you would still need to use a special x86 assembly instruction to load the GDT (lgdt). I would much rather prefer having separate assembly files rather than inlining them in the C source files whenever possible. It's probably just my preference. Also just to clarify, from what I know, since the x86 processors start in 16-bit real mode for the sake of compatibility, you'd have to start writing 16-bit code first, then switch to 32-bit protected mode, then finally switch to 64-bit long mode. However if you use an existing bootloader such as GRUB, then you usually would not need to worry about 16-bit code since GRUB drops you in 32-bit protected mode. But still, if you wish to switch to 64-bit long mode, you *will* have to mix 64-bit and 32-bit code together. Either I don't know how to, or I just don't feel comfortable mixing 32-bit and 64-bit code together *when in C* because you will have a hard time linking those together. Please correct me if I am wrong. -- Ar Rakin
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar
[OSDev] How to switch to long mode in x86 CPUs? Ar Rakin <rakinar2@onesoftnet.eu.org> - 2025-02-27 21:57 +0600
Re: [OSDev] How to switch to long mode in x86 CPUs? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2025-02-27 14:02 -0800
Re: [OSDev] How to switch to long mode in x86 CPUs? Ar Rakin <rakinar2@onesoftnet.eu.org> - 2025-02-28 22:18 +0600
Re: [OSDev] How to switch to long mode in x86 CPUs? antispam@fricas.org (Waldek Hebisch) - 2025-02-28 18:25 +0000
OT: (Was: How to switch to long mode in x86 CPUs?) Salvador Mirzo <smirzo@example.com> - 2025-02-28 19:56 -0300
Re: OT: USENET Salvador Mirzo <smirzo@example.com> - 2025-02-28 19:57 -0300
Re: OT: USENET Richard Harnden <richard.nospam@gmail.invalid> - 2025-02-28 23:38 +0000
Re: OT: USENET Ar Rakin <rakinar2@onesoftnet.eu.org> - 2025-03-01 15:09 +0600
Re: OT: USENET candycanearter07 <candycanearter07@candycanearter07.nomail.afraid> - 2025-03-05 19:30 +0000
Re: OT: USENET Salvador Mirzo <smirzo@example.com> - 2025-03-01 23:34 -0300
Re: OT: USENET Ar Rakin <rakinar2@onesoftnet.eu.org> - 2025-03-02 16:48 +0600
Re: OT: USENET yeti <yeti@tilde.institute> - 2025-03-02 17:27 +0042
Re: OT: USENET Salvador Mirzo <smirzo@example.com> - 2025-03-08 20:06 -0300
Re: OT: USENET Ar Rakin <rakinar2@onesoftnet.eu.org> - 2025-03-01 15:08 +0600
Re: OT: Ar Rakin <rakinar2@onesoftnet.eu.org> - 2025-03-01 15:07 +0600
Re: [OSDev] How to switch to long mode in x86 CPUs? David Brown <david.brown@hesbynett.no> - 2025-02-28 09:59 +0100
Re: [OSDev] How to switch to long mode in x86 CPUs? Ar Rakin <rakinar2@onesoftnet.eu.org> - 2025-02-28 22:30 +0600
Re: [OSDev] How to switch to long mode in x86 CPUs? cross@spitfire.i.gajendra.net (Dan Cross) - 2025-03-01 13:34 +0000
Re: [OSDev] How to switch to long mode in x86 CPUs? "Paul Edwards" <mutazilah@gmail.com> - 2025-03-01 15:50 +1100
Re: [OSDev] How to switch to long mode in x86 CPUs? scott@slp53.sl.home (Scott Lurndal) - 2025-03-01 14:55 +0000
Re: [OSDev] How to switch to long mode in x86 CPUs? Salvador Mirzo <smirzo@example.com> - 2025-03-01 23:37 -0300
Re: PC BIOS (was [OSDev] How to switch to long mode in x86 CPUs?) cross@spitfire.i.gajendra.net (Dan Cross) - 2025-03-02 16:01 +0000
Re: [OSDev] How to switch to long mode in x86 CPUs? scott@slp53.sl.home (Scott Lurndal) - 2025-03-02 16:42 +0000
Re: [OSDev] How to switch to long mode in x86 CPUs? cross@spitfire.i.gajendra.net (Dan Cross) - 2025-03-02 20:26 +0000
Re: [OSDev] How to switch to long mode in x86 CPUs? "Paul Edwards" <mutazilah@gmail.com> - 2025-03-02 19:22 +1100
Re: [OSDev] How to switch to long mode in x86 CPUs? bart <bc@freeuk.com> - 2025-03-02 16:16 +0000
Re: [OSDev] How to switch to long mode in x86 CPUs? "Paul Edwards" <mutazilah@gmail.com> - 2025-03-05 05:31 +1100
Re: [OSDev] How to switch to long mode in x86 CPUs? bart <bc@freeuk.com> - 2025-03-04 20:27 +0000
Re: [OSDev] How to switch to long mode in x86 CPUs? "Paul Edwards" <mutazilah@gmail.com> - 2025-03-05 16:38 +1100
Re: [OSDev] How to switch to long mode in x86 CPUs? cross@spitfire.i.gajendra.net (Dan Cross) - 2025-03-01 13:15 +0000
Re: [OSDev] How to switch to long mode in x86 CPUs? Andy Valencia <vandys@vsta.org> - 2025-03-01 20:02 -0800
csiph-web