らんだむな記憶

blogというものを体験してみようか!的なー

OS

みかん日記 (13)

OS

day06c がわりとつらい。写経がつらいというより、色々マイナーチェンジで書き変わっているファイルもあるので、make を叩いてもコンパイルエラーが多々生じる。一応なんとかコンパイルを通して動かしたが、VirtualBox 上の Ubuntu で QEMU を動かしてみたと…

みかん日記 (12)

OS

色々忙しくて 1 ヶ月近くさぼってしまった・・・。 さっそく写経・・・。既に掲載されている内容は snippet という感じなので、写した後にオフィシャルコードを確認して配置する。ぺたぺた。 みかん日記 (2) - らんだむな記憶 を参考に run_qemu.sh を叩く・…

みかん日記 (11)

OS

第 5 章後半に突入。 何も考えずに day05d をコンパイルすると ld.lld: error: undefined symbol: sprintf と。なるほど、#include <cstdio> はしているが、libc はリンクしていないのでそうなるか・・・。ここで NewLib というやつの出番になるのだな。このライブラ</cstdio>…

みかん日記 (10)

OS

第 5 章に突入。 指定した位置のピクセルを黒くするという内容。まさにビットマップフォント・・・。いわゆる “半角” になっていて、MS 明朝的な感じだなぁ。 この後の章でも色んなものがアスキーアートで描かれていて、まぁそうか・・・と思うと共に、意外…

みかん日記 (9)

OS

第 4 章 c。またまた写経して実行するだけ。 day04c(〜p.107)は終わり。 ***** 第 4 章 d。 .bss セクションとは、通常、初期値なしのグローバル変数が配置されるセクションです。 あまりセクション類は普段意識できていないので、少し覚えておきたい…

みかん日記 (8)

OS

第 4 章。X Forwarding ができるようになって QEMU のウィンドウを手元に表示できるようになったので大幅に楽になった。 またまた写経して実行するだけ。 ABI の話は Swift がバージョン 5 になるまで ABI が安定しなくて毎回でっかい共有ライブラリを抱えて…

みかん日記 (7)

OS

みかん日記 (6) - らんだむな記憶 の補足として、lldb を使って中身を追いかけてみる。 まず、 sudo apt install lldb-7 で lldb をインストールしておく。 lldb-7 foo みたいな感じでプロセスにアタッチした状態で lldb を起動する。 今回はソースコードの …

みかん日記 (6)

OS

p. 89 の「ポインタとアセンブリ言語」についてやはり少し見ておく。 [foo.cpp] #include <cstdint> void foo() { int i = 42; int* p = &i; int r1 = *p; *p = 1; int r2 = i; uintptr_t addr = reinterpret_cast<uintptr_t>(p); int* q = reinterpret_cast<int*>(addr); } を使って、</int*></uintptr_t></cstdint>…

みかん日記 (5)

OS

第 3 章後半。 写経してビルドして走らせるだけ。 QEMU: お次は、USB メモリに書き込んで、VirtualBox で起動。 第 3 章後半の後半はコピーして眺めてビルドして終わり。第 3 章後半(〜p.92)は終わり。

みかん日記 (4)

OS

第 3 章前半。QEMU モニタを使ってみる。run_image.sh 内で qemu-system-x86_64 のオプションとして -monitor stdio を渡していることで QEMU モニタとして標準入出力を使う形になるっぽい。 さて、起動して書籍に倣って RIP レジスタ周辺のアセンブラのイン…

みかん日記 (3)

OS

第 2 章後半は正直写経する箇所がない・・・というか、一部だけ消して何も考えずに写経するくらいしかなさそうなので、オフィシャルからコードを持ってきてビルドして解説を読むだけにした。コードの内容自体はよくありがちなものに見えるからまぁ良かろう。…

みかん日記 (2)

OS

もちろん、そのまま Main.c を写経して clang に通しても $ clang -c Main.c Main.c:1:10: fatal error: 'Uefi.h' file not found #include <Uefi.h> ^~~~~~~~ 1 error generated. となる。ansible によって $HOME/edk2 の下に EDK II が準備されているので、ここに</uefi.h>…

みかん日記 (1)

OS

DeZero に続く写経シリーズ。今度は ゼロからのOS自作入門 | マイナビブックス を写経してみたい。たまたま放置していた Ubuntu 18.04 LTS 環境があるので流用する。 環境構築の前に・・・ apt list --upgradable | perl -n -e 'if (~/^(\w+?)\//){print "$1…