Blog (3 of 8)
-
Linuxで始めるOS自作入門: 29日目
## 内容 1. ファイル圧縮 1. 標準関数 1. 非矩形ウィンドウ 1. bball/invader ## ファイル圧縮 容量削減するために圧縮したファイルを読み込んで開けるようにしたいよね、 という内容。 ここの圧縮ロジックは用意してあったソースファイルを流用\ で、ここ`.gas`から`.nas`へのコンバータに失敗するんですよね(バグらしい&多分Linuxだけ)\ なんとか直せないかなーとコンバータのソースファイルもROMに同梱されているのでそれをコンパイルしようとごねごねしていたら [H
11/14/2020
- OS自作入門
-
Linuxで始めるOS自作入門: 28日目
## 内容 1. alloca関数 1. ファイルAPI 1. 日本語表示 ## alloca関数 PC用のCコンパイラは4KB以上のスタックを確保するためにalloca関数を呼び出すらしい (なので実装してあげないといけない)\ とはいえここでやっているのはなんちゃって実装なんですが...\ この関数があると、アプリが予めストレージ上に確保している領域をメモリ上に読み出して使うのではなく アプリ起動時にスタック領域(配列の展開など)を確保することが出来るようになるので、 アプリのサイズを小さくする
11/11/2020
- OS自作入門
-
Linuxで始めるOS自作入門: 27日目
## 内容 1. OSを守ろう 1. Makefile整理 ## OSを守ろう アプリからOSのglobal segmentに対して書き換えが出来ないものの、 アプリからアプリのsegmentは書き換えが出来てしまうのでそれの対策。\ CPUすごい(小並感) ## Makefile整理 os, lib and app毎にdirを分けてbuild周りを色々整理 ## 余談 (バグある場所に目星を付けつつも 深刻なバグではないので放置中...) 見た目の変化が無いので省略\ なんだかんだ後3日
11/7/2020
- OS自作入門
-
Linuxで始めるOS自作入門: 26日目
## 内容 1. ウィンドウの移動を速く 1. コンソールを増やす・閉じる 1. start, ncstコマンド ## ウィンドウの移動を速く qemuの環境だとウィンドウの移動が遅いので早くしよう、という内容\ vramに書き込むのを1byteずつではなく 4bytesずつ書き込んで4倍速だ! とか色々やっていたんですけど..\ なんせ本書が書かれてから15年も経っているとqemuが十分に速くて違いがわからず... ## コンソールを増やす・閉じる コンソールを増やしたり閉じたり出来るようにし
11/5/2020
- OS自作入門
-
Linuxで始めるOS自作入門: 25日目
## 内容 1. beep sound 1. 色を増やそう 1. コンソールを増やそう ## beep sound 音を鳴らそう、というやつ この内容、QEMUだと音のエミュレートが無いので出来ないよーという 本書の説明だったのですが... この本書かれたのが15年前で、最新のQEMUでそんなわけ無いじゃんと... で、音はなりました。 ちなみに`qemu beep`で検索すると本書25日目の内容の日本語記事が大量にヒットするのですが (世の中は車輪の再発明が流行っているらしい) 日本語の記事は
10/31/2020
- OS自作入門
-
Linuxで始めるOS自作入門: 24日目
## 内容 1. ウィンドウの切り替え 1. ウィンドウの移動 1. ウィンドウを閉じる 1. タイマAPI ## ウィンドウの切り替え 流石に、windowの並びが変化しないのは辛いよね、という内容 ## ウィンドウの移動 ウィンドウ切り替えられるなら、移動もさせたいよね、という内容 ## ウィンドウを閉じる 右上の'x'押したらウィンドウ閉じたいよね、という内容 ## タイマAPI ウィンドウ操作できるなら時間計りたいよね、という内容 ## 余談 本書と違って中身の無い内容ですが
10/29/2020
- OS自作入門
-
Linuxで始めるOS自作入門: 23日目
## 内容 1. malloc 1. 線描画 1. ウィンドウのクローズ ## malloc 前回のアプリは、ストレージ上に使用する領域分のサイズを持っていて、 それをメモリに読み込むようになっていたので、バイナリデータが大きかった... なので、これをアプリ実行時にメモリ領域を確保する方式にしよう、ということで `malloc`を実装 ## 線描画 ウィンドウ上に線を引くためのapiを実装 ## ウィンドウのクローズ 今まで画面にずっとウィンドウが出っぱなしだったので、 `enter`でウ
10/27/2020
- OS自作入門
-
Linuxで始めるOS自作入門: 22日目
## 内容 1. OSを守る(2) 1. アプリの強制終了 1. 文字列表示 1. windowの表示 ## OSを守る(2) 前回は一般保護例外(General Protected Exception) を実装しましたが、今回はスタック例外(Stack Exception)。\ CPUは制限モード下ではいくつかの例外を検出するようになっていますが、 それを処理しないとOSが落ちるので、それの対応です (CPUすごい)。 ## アプリの強制終了 例えば、無限ループなどをCPUは例外として検知出来
10/25/2020
- OS自作入門
-
Linuxで始めるOS自作入門: 21日目
## 内容 1. C言語でアプリを作る 1. OSを守る ## C言語でアプリを作る 前回まで作成していたアプリはアセンブリで記述していたため、 Cで書きたいよね、ということでC言語から作成したアプリを実行できるように修正\ CからAPI(syscall)を呼べるようにしたり (`#include <std.io>... print(...);)` とかってこんな感じなのかな?と少し感動) ## OSを守る 余り詳しくは無いのですが... 今まで作成していたのは全てLinuxでいうカーネルモード
10/22/2020
- OS自作入門
-
Linuxで始めるOS自作入門: 20日目
前回から1ヶ月も経ってしまっている(反省) ## 内容 1. 任意のアプリを実行できるようにする 1. APIの実装 ## 任意のアプリを実行できるようにする この辺はほぼリファクタリングです\ 今まで実行ファイルをリテラルで直書きしていたのを ファイル検索してあれば実行、なければエラーとする処理を追加した感じです ## APIの実装 APIと言っていますが... `syscall`の方が馴染みがあるかもしれない consollに文字を表示する処理をOS側の機能として用意し、 アプリはそれを呼
10/20/2020
- OS自作入門