Update Home
parent
3bc419a493
commit
3753ad02ac
39
Home.md
39
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.
|
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:
|
***Which compiler to use, gcc or clang?***
|
||||||
* 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:
|
Preliminary list of essential software:
|
||||||
|
- QEMU: open-source machine emulator
|
||||||
|
- gcc:
|
||||||
|
- gdb:
|
||||||
|
- make:
|
||||||
|
- objdump:
|
||||||
|
- ...
|
||||||
|
|
||||||
- [ ] QEMU: open-source machine emulator
|
(ubuntu dockerfile...)
|
||||||
- [ ] gcc:
|
|
||||||
- [ ] gdb:
|
|
||||||
- [ ] make:
|
|
||||||
- [ ] objdump:
|
|
||||||
- [ ] ...
|
|
||||||
|
|
||||||
### Step 1: Make a bootloader that prints 'dmzOS'
|
### Step 1: Make a bootloader that prints 'dmzOS'
|
||||||
> **Suggested reading**:
|
> **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.
|
* 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.
|
* 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.
|
* 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.
|
|
||||||
|
|
||||||
*** Intel or AT&T syntax for asm code?***
|
*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.
|
* 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:
|
### Step 2:
|
||||||
...
|
(...)
|
||||||
|
|
||||||
## List of command cheatsheets
|
## List of command cheatsheets
|
||||||
### Docker
|
### Docker
|
||||||
### gcc, gdb, clang-format...
|
### gcc, gdb, clang-format...
|
||||||
...
|
(...)
|
||||||
|
|
||||||
## Useful links
|
## Useful links
|
||||||
### Wiki
|
### Wiki
|
||||||
@ -68,4 +71,4 @@ Decision: Intel syntax, as it is used in
|
|||||||
[os01]: https://github.com/tuhdo/os01
|
[os01]: https://github.com/tuhdo/os01
|
||||||
[amd64v1]: https://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/programmer-references/24592.pdf
|
[amd64v1]: https://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/programmer-references/24592.pdf
|
||||||
[amd64v2]: https://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/programmer-references/24593.pdf
|
[amd64v2]: https://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/programmer-references/24593.pdf
|
||||||
[intel64] :https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html#combined
|
[intel64]: https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html#combined
|
Loading…
Reference in New Issue
Block a user