{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreifhygpuhf7wjqrryefd37fjyjitiotec5y7zd6ldvvu2lkfm7fgfu",
    "uri": "at://did:plc:ndtvnkebzmsduapq2rqlsru4/app.bsky.feed.post/3mbepsurtcbv2"
  },
  "path": "/syndications/kl-os-2026-01-01/",
  "publishedAt": "2026-01-01T00:00:00.000Z",
  "site": "https://scientiac.space",
  "tags": [
    "https://scientiac.space/syndications/kl-os-2026-01-01/POSSE",
    "Day 11"
  ],
  "textContent": "Day 11 was about application.\n\nFirst, a linker script named `user.ln` was made this time starting at address `1000000` so that the application doesn't overlap with the kernel space.\n\nThen a simple `userland` library is created with minimal features just enough to indicate the existence of a userland application. A header file for the userland library is also made.\n\nThen an application is made, very `barebones`, it is just an infinite loop for now since there is no way to print characters at the moment.\n\nTo build the application, we first compile it with cc to get an executable in a `ELF` format. The executable is then converted to raw binary format with the `objcopy` tool. Then the raw binary executable format is then again converted to a format that can be embedded in the C language.\n\nLastly, the `shell.bin.o` output is then passed to `clang` (kernel build section of the script) which gets embedded into the kernel image.",
  "title": "KL-OS: Application",
  "updatedAt": "2026-04-22T08:40:29.994Z"
}