4 ms·
I'll just leave these here... http://www.intel.com/products/processor/manuals/index.htm http://www.intel.com/products/processor/manuals/index.htm [disclaimer:
by Locke1689 17y ago
I'll just leave these here...
http://www.intel.com/products/processor/manuals/index.htm http://www.intel.com/products/processor/manuals/index.htm
[disclaimer: I'm an OS/kernel dev]
- dkersten 17y agoThe System Programming manual and the Instruction Set references (I do not have a copy of the Application Programming manual, unfortunately, and don't really want to read it in PDF form) are exceptionally good and have helped me back when I used to mess with toy kernels and also helped with Uni assignments. I'd definitely recommend them to anyone who is interested in kernel or assembly development.
- mahmud 17y agoBut you can bootstrap a cheap Unix with chapters 5-10 of this: http://www.logix.cz/michal/doc/i386/ http://www.logix.cz/michal/doc/i386/ Getting into protected mode and exec'ing processes in their on private space has been done with ~4 pages of asm.
- Locke1689 17y agoDon't run in v8086 mode unless you have to (BIOS boot in Intel VMX). Just go directly to PE or LME as the new docs tell you. It may be interesting to look at the history though. Also, while devs have to write portable code -- don't bother. It'll save you a bunch of time if you just write the IA32e specific asm code. If anyone has any interest, I can also post my adaptation of an asmx86 vim syntax file I hacked up from something I found on Stack Overflow. It's not that great, but it does at least fix some of the register highlighting.
- sown 17y agoI gotta ask...if I go do this sort of thing on my own, I might produce something that won't segfault or oops()...if I were to walk into a job interview for an os/kernel dev job (the kind that rand say I did write a crappy primitive kernel would that look good or bad? I've been working for almost 3 years now and this is an area that I would like to move into.
- Locke1689 17y agoI'm not in industry but in academia so I'm hesitant to say anything concerning commercial development. I can't ever see it being a negative thing, but the difference between a toy kernel like he is proposing and a real system is larger than many people think. For example, knowing how to use the GDT and the LDT is definitely required, but knowledge of SMP design and general hardware architecture (think chip design, memory hierarchy, etc) are equally important. If you were looking for a career in systems design, definitely read the Intel Manuals cover to cover -- then go look at the Linux/BSD kernel to see where things were explained so poorly that they may as well be wrong. I would also highly encourage you to take part in a systems open source project (since I work on virtual machines, I would of course suggest Xen or QEMU). If you like, a much simpler version of the Linux kernel, Kitten OS[1], is used to run at Sandia and in sequence with the Palacios academic virtual machine[2], which is what I'm working on. It may be worth looking at, although I still highly recommend that you look into actual production code. [1] https://software.sandia.gov/trac/kitten https://software.sandia.gov/trac/kitten [2] http://v3vee.org/ http://v3vee.org/