Ubuntu 18.04.1 LTSでやる 30日OS本 〜5日目〜
Ubuntu 18.04.1 LTSでやる 30日OS本、5日目です。 他の章へのリンクはここにあります。
1. 〜 4.
本の通りにやればできました。putfont8
はビットシフトを使ってもう少し簡潔にできます。
5. フォントを増やしたい
hankaku.txt
から
char hankaku[4096] = { (中略) };
のようなCのファイルをつくればよいので、変換用のプログラムを書きました。Makefileに変換プログラムのコンパイル・テキストからの変換を追記して、
変換してできたファイルをbootpack.c
達と一緒にコンパイルするようにしました。
6. 文字列を書きたい
はい。
7. 変数の値の表示
sprintf
関数を使いたいところですが、リンクの都合?で使えなかったので自分で書くことにしました。stdarg.h
のva_list
などは使用できたので、
これを使って可変長引数から値を受け取って処理していく、という方針で良さそうです。
#include <stdarg.h> int my_sprintf(char *s, const char *fmt, ...){ va_list ap; int cnt = 0; //出力した文字数 va_start(ap, fmt); /* 中略 ...にあたる部分の引数はva_arg(ap, 型)で順に取り出せる fmt(フォーマット文字列)を読み取り、それに応じてva_argしつつsに書き込んでいけば良い */ s[cnt] = '\0'; cnt++; va_end(ap); return cnt; }
8.〜9.
本の通りに進めました。