<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://www.os.ybeweb.com/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://www.os.ybeweb.com/feed.php">
        <title>Legion</title>
        <description></description>
        <link>https://www.os.ybeweb.com/</link>
        <image rdf:resource="https://www.os.ybeweb.com/lib/tpl/dokuwiki/images/favicon.ico" />
       <dc:date>2026-06-30T13:12:21+0000</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://www.os.ybeweb.com/doku.php?id=elf_loader&amp;rev=1490605247&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.os.ybeweb.com/doku.php?id=kernel&amp;rev=1488487001&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.os.ybeweb.com/doku.php?id=my_loader&amp;rev=1488563696&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.os.ybeweb.com/doku.php?id=my_makefile&amp;rev=1488549421&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.os.ybeweb.com/doku.php?id=my_mbr&amp;rev=1490610991&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.os.ybeweb.com/doku.php?id=progress&amp;rev=1490863687&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.os.ybeweb.com/doku.php?id=real_mode&amp;rev=1488479355&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.os.ybeweb.com/doku.php?id=start&amp;rev=1490864163&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.os.ybeweb.com/doku.php?id=toolchain&amp;rev=1488562015&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.os.ybeweb.com/doku.php?id=user_space&amp;rev=1488534146&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.os.ybeweb.com/doku.php?id=x86_memory_aliasing&amp;rev=1488533933&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://www.os.ybeweb.com/lib/tpl/dokuwiki/images/favicon.ico">
        <title>Legion</title>
        <link>https://www.os.ybeweb.com/</link>
        <url>https://www.os.ybeweb.com/lib/tpl/dokuwiki/images/favicon.ico</url>
    </image>
    <item rdf:about="https://www.os.ybeweb.com/doku.php?id=elf_loader&amp;rev=1490605247&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-03-27T09:00:47+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>elf_loader</title>
        <link>https://www.os.ybeweb.com/doku.php?id=elf_loader&amp;rev=1490605247&amp;do=diff</link>
        <description>ELF loader

In short: Code to load and execute ELF-formatted files.



ELF (Executable and Linkable Format) is a versatile format for code storage, and an implementation of such a loader will vary depending on its purpose.

To run programs you will need a loader for executable code, and as such your loader also needs to be able to set up the environment as described in the ELF headers. Generally this will be to initialize some memory and set up a stack, in addition to place the code correctly in…</description>
    </item>
    <item rdf:about="https://www.os.ybeweb.com/doku.php?id=kernel&amp;rev=1488487001&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-03-02T20:36:41+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>kernel</title>
        <link>https://www.os.ybeweb.com/doku.php?id=kernel&amp;rev=1488487001&amp;do=diff</link>
        <description>kernel

In short: The center of your system. What talks to the hardware. What makes a user program not have to worry about details. What makes the rules. The boss. The kernel.

Like I did, you may at this point wonder what the job of the kernel actually is.</description>
    </item>
    <item rdf:about="https://www.os.ybeweb.com/doku.php?id=my_loader&amp;rev=1488563696&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-03-03T17:54:56+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>my_loader</title>
        <link>https://www.os.ybeweb.com/doku.php?id=my_loader&amp;rev=1488563696&amp;do=diff</link>
        <description>(A work in progress)

In any case, this is where I go to 64-bit long mode and load my final kernel.

As such, it will also be where I enter the first stage of using C code.

The fun starts here :-)</description>
    </item>
    <item rdf:about="https://www.os.ybeweb.com/doku.php?id=my_makefile&amp;rev=1488549421&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-03-03T13:57:01+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>my_makefile</title>
        <link>https://www.os.ybeweb.com/doku.php?id=my_makefile&amp;rev=1488549421&amp;do=diff</link>
        <description>My makefile

The makefile builds a complete project from scratch up to and including building a format ready for usage.


CC=i686-elf-gcc
AS=i686-elf-as
KOBJ=kernel.o
MBIN=mbr/mbr.bin mbr/64.bin
#SECTOR=2048		# CD
SECTOR=512		# HD

# linkable C objects
%.o: %.c $(DEPS)
	$(CC) -c $&lt; -o $@ -std=gnu99 -ffreestanding -O2 -Wall -Wextra

# linkable AS objects
%.o: %.s
	$(AS) $&lt; -o $@

# real mode NASM binaries
%.bin: %.nasm
	nasm $&lt; -f bin -o $@

# build full kernel with boot
kernel: $(KOBJ) $(MBIN)
	…</description>
    </item>
    <item rdf:about="https://www.os.ybeweb.com/doku.php?id=my_mbr&amp;rev=1490610991&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-03-27T10:36:31+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>my_mbr</title>
        <link>https://www.os.ybeweb.com/doku.php?id=my_mbr&amp;rev=1490610991&amp;do=diff</link>
        <description>My MBR

I'm using NASM to write my real mode code, and I use file extension “nasm” to separate them from other assembler files. This makes the build process able to automatically select the correct assembler.



Current state:

1. Copy 512 bytes to new location.</description>
    </item>
    <item rdf:about="https://www.os.ybeweb.com/doku.php?id=progress&amp;rev=1490863687&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-03-30T08:48:07+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>progress</title>
        <link>https://www.os.ybeweb.com/doku.php?id=progress&amp;rev=1490863687&amp;do=diff</link>
        <description>Progress

At first

To start off my project I started searching for information I might need. I found some references to similar projects, but found them difficult to implement. Mostly because they did not do a good job of documenting what, why and how. You will also find it quite common that these so-called walk-throughs leave out things that can be located elsewhere, making progress painfully slow as you need to find all that missing information.</description>
    </item>
    <item rdf:about="https://www.os.ybeweb.com/doku.php?id=real_mode&amp;rev=1488479355&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-03-02T18:29:15+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>real_mode</title>
        <link>https://www.os.ybeweb.com/doku.php?id=real_mode&amp;rev=1488479355&amp;do=diff</link>
        <description>Real Mode

In short: When your code is working directly on the hardware.



This is the mode an x86 (or equivalent) processor starts up. There's no buffer between your code and the actual hardware. Your code talks directly to memory, CPU, disks, etc. It's</description>
    </item>
    <item rdf:about="https://www.os.ybeweb.com/doku.php?id=start&amp;rev=1490864163&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-03-30T08:56:03+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>start</title>
        <link>https://www.os.ybeweb.com/doku.php?id=start&amp;rev=1490864163&amp;do=diff</link>
        <description>In the beginning...

So, I got the idea to write a kernel. You know... Just to see if I could do it.
Like me, you may have started reading stuff on the Internet to see what to do and what to learn and so on and so forth. I found lots of stuff to learn and to set up.
Sifting through the myriad of ways to do it, this is how I progress through it. You may find some answers to your own roadblocks</description>
    </item>
    <item rdf:about="https://www.os.ybeweb.com/doku.php?id=toolchain&amp;rev=1488562015&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-03-03T17:26:55+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>toolchain</title>
        <link>https://www.os.ybeweb.com/doku.php?id=toolchain&amp;rev=1488562015&amp;do=diff</link>
        <description>Toolchain

In short: Your developement tools, and in what order they are used. A chain of tools, if you will.



This is highly dependent on your environment. For myself, I am starting the developement on a Windows 10 computer. So I need tools that runs nicely on this platform.</description>
    </item>
    <item rdf:about="https://www.os.ybeweb.com/doku.php?id=user_space&amp;rev=1488534146&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-03-03T09:42:26+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>user_space</title>
        <link>https://www.os.ybeweb.com/doku.php?id=user_space&amp;rev=1488534146&amp;do=diff</link>
        <description>User Space

In short: The environment where user code is running within the operating system.

It's what you read on the label. A space for the user. This space is provided by the operating system. At its core; the kernel you are about to write.

This is extremely basic and low level. Within user space you will, for example, have access to files and (if done correctly) you will not have to worry about allocating physical memory or talking directly to hardware (like disk or USB or what have you).…</description>
    </item>
    <item rdf:about="https://www.os.ybeweb.com/doku.php?id=x86_memory_aliasing&amp;rev=1488533933&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-03-03T09:38:53+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>x86_memory_aliasing</title>
        <link>https://www.os.ybeweb.com/doku.php?id=x86_memory_aliasing&amp;rev=1488533933&amp;do=diff</link>
        <description>x86 Memory Aliasing

In short: Aliasing is the way an x86 CPU maps an assembler address to a physical address.



You may have seen stuff like segment:offset in regard to addressing. For a real location this could be 0000:7C00. This means: Segment 0000</description>
    </item>
</rdf:RDF>
