03042009 as
インテルCPUのGNUユーザへ
- フラグの種類と役割
- 符号付き制すのフラグ
- array(%edi)はアドレス値$arrayに%ediを加算したアドレス値の内容にアクセス
- retはcall分の次の命令にリターン
- 引数の渡し方
- レジスタ渡し
- メモリ渡し
- スタック渡し
- 変数宣言
- メモリ領域の確保
- データに適した命令生成
- メモリ内の構造体
- 関数呼び出し
- 引数をスタックにプッシュ
- call命令を実行
- 呼び出された関数はスタックの中を見ることで引数を使う
03042009 as
インテルCPUのGNUユーザへ
分厚い
実用SSH 第2版―セキュアシェル徹底活用ガイド02042009 life
明日到着予定。
でも、まわりに持っている人がいなさそうなのが残念なところ。Fuji Poken Nightとかはないもんか、、、、
安西先生、ハイタッチがしたいです。みたいな。
このままでは、U隊長に一個贈って、家の中で名刺交換することになりそう。
schemeでレジスタ計算機を書いたら、次はparrotというレジスタ仮想機械、(そしてPerl6へみたいな。)
さて、ダウンロードしてきたソースコードについてたexamples/pir/euclid.pirというのがユークリッドの互除法のサンプルなのでこれを使う。
pirというのはParrot Assembly Language(pasm)よりも抽象度の高い言語らしい。
.sub 'example' :main
$I1 = 96
$I2 = 64
print "Algorithm E (Euclid's algorithm)\n"
e1: $I4 = mod $I1, $I2
e2: unless $I4 goto done
e3: $I1 = $I2
$I2 = $I4
branch e1
done: print "The greatest common denominator of 96 and 64 is "
print $I2
print ".\n"
.end
pasmに変換
parrot --output=euclid.pasm euclid.pir
これで、アセンブリコードが吐き出されたので見てみる。
example:
set I0, 96
set I1, 64
print "Algorithm E (Euclid's algorithm)\n"
e1:
mod I2, I0, I1
e2:
unless I2, done
e3:
set I0, I1
set I1, I2
branch e1
done:
print "The greatest common denominator of 96 and 64 is "
print I1
print ".\n"
end
ふむふむ。
ずっと5章に興味が持てなくてほったらかしにしていたのだけど、読み始めた。5章は毛色が違うように感じてたのと、単に関数型言語が知りたいだけだったら3章までで満足できて、計算機の話って何が面白いんだろうか?なんて思ってたのだけど、(僕の場合)以下のような道のりを経て5章にたどり着いた。
Cのプログラムをアセンブリから眺めてみる。レジスタとかメモリとか意識できるようになった。
4bitCPUつくる。半加算器とか全加算器が論理回路でつくれるとかそういう話は楽しい。
という長い道のりを経て、やっとSICP5章。
数日かけてバグとって、実際にGCDマシンが動いた時にはかなり感動。
gosh> (set-register-contents! gcd-machine 'a 206)
done
gosh> (set-register-contents! gcd-machine 'b 40)
done
gosh> (start gcd-machine)
done
gosh> (get-register-contents gcd-machine 'a)
2
デバッグしながら中身の動きが理解できた。
31032009 life
欲しいんだけど、買ってもどうせやらないんだろうな。
最近ゲームから遠ざかっているので、子供がやりそうとかそういうおまけネタがないと買わないんだよなぁ。3歳児には立体ピクロスは難しすぎるかなぁ。
2x2のルービックキューブも買ったものの、遊ばれるようになるのを待っている状態。
まぁ2x2は自分でやって面白いからいいんだけど。
31032009 Python
31032009 Arduino
30032009 life
30032009 work
製薬会社だと、会社に縛られる要因ってのは
最初の設備に関してはコンピューター系にとってはもう関係ない。むしろ自宅のマシンで小さいサンプルのコードを動かして、会社のクラスタではrunするだけみたいな。職場というのは、スケールとデータの違いのみ。
二番目も、ディスカスなんて週一でいいし、社内でするより社外でのつながりを重視したほうが得るものが多い。社外で得た情報やアイデアの中から会社にとって良さげなものを選別してコミットしとけば良いような。結局、会社は共有レポジトリみたいなもんで、pushとpullしに出かけていくところ。そしてpullの頻度が出社の頻度なのが理想。得るものがなければpushだけして帰ればいいんじゃないの?それが裁量労働+成果主義のあるべき姿だと思うけど。
(研究者として)会社に縛られる最大の要因が、論文アクセスだ。他人の知識を書物として吸収できるのは重要だが、会社の資産故に外部との議論に使えない。しかし、オープンアクセスになったら気兼ねなく意見をブログに載せられるし、横のつながりも増えるだろう。現実に、open accessの論文をもとにディスカッションするのが一番盛り上がるし。
とか考えると、会社のこじんまりとしたキャリアパスとかアレだよね。SOHOとかベスト