Update Home

sborovic 2024-02-11 18:32:07 +00:00
parent 3bc419a493
commit 3753ad02ac

35
Home.md

@ -8,21 +8,20 @@ A great way to learn something new is to retrace the steps taken by someone who
To safeguard against dependency hell, all the essential software needed to develop and run our OS will be provided through a set of Docker images. For those unfamiliar with Docker, a command cheatsheet will be provided later on.
Dilemmas:
* gcc or clang?
***Which compiler to use, gcc or clang?***
...
** Decision**: ...
To-dos:
* Choose a git workflow.
* Decide upon issue a nd commit message style
* clang-format cheatsheet
Preliminary list of essential software:
- QEMU: open-source machine emulator
- gcc:
- gdb:
- make:
- objdump:
- ...
- [ ] QEMU: open-source machine emulator
- [ ] gcc:
- [ ] gdb:
- [ ] make:
- [ ] objdump:
- [ ] ...
(ubuntu dockerfile...)
### Step 1: Make a bootloader that prints 'dmzOS'
> **Suggested reading**:
@ -34,18 +33,22 @@ A few dilemmas had already emerged before even having started writing any code.
* A 32-bit kernel can provide access to 2<sup>32</sup> memory addresses. For a byte-addressable memory, that equals 2<sup>32</sup> B = 4*2<sup>30</sup> B = 4 GiB of physical memory. On the other hand, a 64-bit kernel can provide access to 2<sup>64</sup> B = 16 EiB of physical memory.
* Having more RAM available makes heavy multitasking and memory-intensive operations perform better. On the other hand, 64-bit programs use about 50% more memory then their 32-bit counterpart; this is due to numerous reasons, one of which is that 64-bit pointers take up twice as much space as 32-bit ones.
* The x86_64 architecture has two primary [modes of operation](https://en.wikipedia.org/wiki/X86-64#Operating_modes), each having different sub-modes. A 64-bit and 32-bit kernel require the processor to operate in different modes.
Decision: In order to prevent running into chaos, we will first stick to the steps outlined in [Operating Systems: From 0 to 1][os01], which will result in our developing a 32-bit kernel stub. At that point, we will have necessary information to decide whether it aligns better with our goals to keep the kernel 32-bit or to convert it into a 64-bit version.
*Decision*: In order to prevent running into chaos, we will first stick to the steps outlined in [Operating Systems: From 0 to 1][os01], which will result in our developing a 32-bit kernel stub. At that point, we will have necessary information to decide whether it aligns better with our goals to keep the kernel 32-bit or to convert it into a 64-bit version.
***Intel or AT&T syntax for asm code?***
* This is simply a matter of personal preference, as both are translated into the same machine code.
Decision: Intel syntax, as it is used in
*Decision*: Intel syntax, as it is used both in [AMD][amd64v1] and [Intel][intel64] architecture manuals.
(...)
### Step 2:
...
(...)
## List of command cheatsheets
### Docker
### gcc, gdb, clang-format...
...
(...)
## Useful links
### Wiki