by shigemk2

当面は技術的なことしか書かない

2014-08-16から1日間の記事一覧

main()

読んでもあまりおもしろくない、らしい P430 ken/main.c /* * Initialization code. * Called from m40.s or m45.s as * soon as a stack and segmentation * have been established. * Functions: * clear and free user core * find which clock is config…

起動の流れ

P424 ブートストラップローダプログラムがルートディスクのブロック番号0にあるブートストラッププログラムをメモリのアドレス0に読み込んで実行する ブートストラッププログラムはルートディスクのファイルシステムから/unixや/rkunixといったカーネルプロ…

find grepで一文字だけ検索する

普通、 $ find sys/ -type f -name "*.h" | xargs grep "u" -n って実行したら尋常じゃないほど検索結果が帰ってくるだろうけど、 \bと\bの間に一文字入れたら一文字だけの検索が出来るよ。 $ find sys/ -type f -name "*.h" | xargs grep "\bu\b" -n

ttstart

端末への出力処理を行う /* * Start output on the typewriter. It is used from the top half * after some characters have been put on the output queue, * from the interrupt routine to transmit the next * character, and after a timeout has fini…

端末への出力

ユーザプログラムが端末にwriteシステムコールを発行 ユーザ空間のデータがtty.t_outqに追加 tty.t_outqの先頭データをKL11レジスタに設定して端末の出力処理を開始 出力端末の動作が完了するとKL11が割り込みをかけて、割り込みハンドラはtty.t_outqにデー…

入力されたデータの読み込み

入力されたデータは以下の流れでユーザ空間に読み込まれる ユーザプログラムが端末に対してreadシステムコールを発行 tty.t_rawqからデータを読み出し、tty.t_canqへデータを移す tty.t_canqのデータをユーザ空間に呼び出す klread(データをユーザ空間に読み…

端末からの文字入力

概要 P403 1文字入力したら割り込みが発生 変換した値をtty.t_rawqに追加 割り込みのハンドラ マイナー番号に対応するtty構造体をkl11[]から取得し、kl11の入力レジスタから入力された値を取得する 受信可能状態にしたあとにttyinputを実行 dmr/kl.c klrint(…

sgtty

sgtty dmr/tty.c gttyとsttyの実際の処理 /* * Stuff common to stty and gtty. * Check legality and switch out to individual * device routine. * v is 0 for stty; the parameters are taken from u.u_arg[]. * c is non-zero for gtty and is the plac…

klclose

P396 KL11のクローズ処理を行う(wflushtty) klclose(dev) { register struct tty *tp; tp = &kl11[dev.d_minor]; /* 実際の処理 */ wflushtty(tp); /* 状態を保存する */ tp->t_state = 0; } dmr/tty.c 他の処理をスリープしつつ、キューを空にする /* * Wai…

gttyとstty

P399 カーネルランドにある端末の情報をユーザランドに書き込むのがgtty 逆にユーザランドにある端末の情報をカーネルランドに書き込むのがstty 書き込み先の指定はsgtty関数で行う(処理は丸投げ) suwordはカーネル→ユーザ fuwordはユーザ→カーネル dmr/tty.…

klopen

前提 KL-11が何枚か刺せる DL-11も何枚か刺せる 本体---KL-11---端末 (出力先は画面ではなく紙テープ) この端末のことをテレタイプ(teletype)端末という。端末は複数刺さるが、物理スロットが少ないからつなげるのには限界がある マルチプレクサで複数つなげ…

Windowsにndisasmを入れる

http://www.nasm.us/pub/nasm/releasebuilds/2.11.05/win32/ こちらからインストーラを入れる。 デフォルトのインストール先は変なところなので、そのパスを環境変数に追加する

ndisasmとは

Solaris でハンドアセンブル (やっぱり Sun がスキ!) ndisasm はディスアセンブラです。ディスアセンブラは、バイナリの機械語命令を読み込んで、人間に理解し易いニーモニックに変換してくれます。ディスアセンブラを使用する事で、ハンドアセンブルが正し…

hexdump

xオプションをつけると2バイト単位の16進数4桁で出力するけども、リトルエンディアンです。 $ hexdump -x a.out 0000000 5653 4852 89c2 bbc3 bec3 c303 03be bec3 0000010 c303 03be bec3 c303 03be bec3 c303 03be 0000020 bec3 c203 3b80 0f00 84c2 001d …