2015年29週目まとめ
CPUの特権レベルについて調べた
CPUには複数のモードが存在し、特定の機能やメモリ領域にアクセスできるかどうかがこのモードで制御されるらしいです。
通常、ユーザのプログラムはレベル3、カーネルがレベル0で動いており、
ユーザのプログラムはレベル0で動いています。
そのため、 レベル0用のリソースを使うためにはカーネルに処理をお願いする必要があるそうです。
goのビルドツールについて調べる
go build
を実行することで、コンパイルとリンクをまとめて行うことが出来ます。
ですが、goではそれを別々に実行することも出来ます。
go tool 8g
もしくはgo tool 6g
を使うことで、goのソースコードからオブジェクトファイルを作成できます。
(どちらかは使用しているマシンのアーキテクチャによります)
生成されるオブジェクトファイルは.8もしくは.6の拡張子になります。
このファイルをgo tool 8l
もしくはgo tool 6l
を使ってリンクすることで、実行ファイルを作成できます。
実行ファイルはファイル名を指定しない場合、8.outもしくは6.outになります。
レーベンシュタイン距離計算を実装した
https://gist.github.com/ota42y/29dc71841f4388957020
二つの文字列のうち、片方をどれくらい編集したらもう片方の文字列に出来るかを求めるやつです。
アルゴリズム的には凄い簡単ですね。