From 3753ad02ac5a4df4e1080d51e28156c677a60404 Mon Sep 17 00:00:00 2001 From: sborovic Date: Sun, 11 Feb 2024 18:32:07 +0000 Subject: [PATCH] Update Home --- Home.md | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/Home.md b/Home.md index cde7e60..b0cf658 100644 --- a/Home.md +++ b/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 232 memory addresses. For a byte-addressable memory, that equals 232 B = 4*230 B = 4 GiB of physical memory. On the other hand, a 64-bit kernel can provide access to 264 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. -*** 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. -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 @@ -68,4 +71,4 @@ Decision: Intel syntax, as it is used in [os01]: https://github.com/tuhdo/os01 [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 -[intel64] :https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html#combined \ No newline at end of file +[intel64]: https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html#combined \ No newline at end of file