ToDo:
なんか色々直感に反する感じだなぁ。なにがってのがイマイチ具体的に説明しにくい感じだからアレだけど。
まずあんま地頭って概念を信じてないんだよな。いや一定あるだろうけど、環境・教育・ノリ・運とかの方がでかい気がしてて。特に小学校時の成績とか。どうなんだろ
(13:07)
shinh.org のレスキューでもするかーと重い腰をあげて再起動。 libc がぶっこわれてるので、まぁ init とかも動かない。
debian のインストールイメージを USB disk に焼いて、適当に起動。データをコピーしたいので rescue mode で。
で、インストールイメージには scp とか入ってない。しょうがないから元々入ってたやつ使うかーと思って、はたと気付くに、 libc がぶっこわれてるのでまぁ動かない。
なるほどラクなのは別な rescue image で起動することかなーと思ったけど、なんか debian のどこをマウントしますか? て質問の中に、なんか LVM の volume がある。えーとこれなんだっけと思い出してみるに旧ゴルフ場の Xen の guest のイメージだ。そうそう Xen のイメージをなんとなく LVM の volume 使ってたんだよね。で、これ問題なく chroot できる環境なんじゃね…と思って入ってみると、本当にできた。ので host の方のパーティションをマウントして rsync 開始。
まさかこんなことに役に立つとは思わなかった。なんか grub も LVM サポートしてるぽいから、やろうと思ったら普段は host + guest だけど、いざという時は guest の方から boot する、なんて構成も可能ってことかな。実用性不明だが楽しそうではあるか…
(13:58)
だいたいふっかつさせた。 wfs とかもう二度と動かない気がするけど、もういいや。
ついでに cia.shinh.org を更新した。なんか古いデータはいいやってことで最近3年で。
を見て思うのは、ついに w3m がトップじゃなくなってるってことでこれが時代の流れか…あと git もすごいね。
キータイプモニタの方は全部 Rep がついてるのはおかしいな。あと水曜にピークがあるのもおかしいので色々ヘンではある。まぁ気にしない方向で。
(16:54)
そういえば会社で M:tG がチューリング完全だと教えてもらったので読もうと思ってたのを思い出した
http://www.toothycat.net/~hologram/Turing/HowItWorks.html
完全に理解したわけじゃないけど、カードの効果書き換える系のやつを使いまくる感じになるわけか。あとテープが短くて実際にコード書くのはしんどいのかな。
ひとつ残念なのは全自動じゃなくて、 you may て入ってる効果を使ってるから、それをコントロールしてる人がチューリングマシンを止めることができることか。
そのへんの制約がなかったら、完全に合法な手段でチューリングマシンをゲーム中に構成して、例えば colatz 予想の判例が見つかったら相手が死ぬようにして 10^100 くらいまで見つからなかったら自分が死ぬ、とかすると、はてこのゲームは私の勝ちでいいのかしら…という感じになって面白いんだけど。
そして後世になって colatz 予想の判例が見つかって、逆転負けを喫する
(08:23)
素直に GTR やめろって話かもしれない
http://www.inosendo.com/puyo/rensim/??600000445000
と置くけど、次 BC の時にちょっとイヤな気分になる。気分で変えてるけど、次に4色目が見えてりゃ
http://www.inosendo.com/puyo/rensim/??600500445600
で見えてないなら
http://www.inosendo.com/puyo/rensim/??665000445000
で LLR というのが良い気がする。いやくま積みやれって話だろうが。
今は新 GTR に向かってると思う。けど、ひとつ目を左2列目に立てた後に、 AA もしくは BB が次でなければ、 GTR に行く感じでなんも問題ない気がする。
A 下だとして、 AA は
http://www.inosendo.com/puyo/rensim/??40000055000444000
BB は
http://www.inosendo.com/puyo/rensim/??55000044550
と置くことにしよう。 AA の方は今まで全然やってないやり方だな。
これは新 GTR に向かう方で置いてると思う。この後 AA BB は上と同じ。
BC は BC か CC が見えてる時だけフキゲンGTRで。 CD もフキゲンでもいい気はしないでもないけど、 AC は右に使いたいからもう新 GTR でいいやって気がするね、そんなことしてるから全消し取れないんだろうが
(09:15)
http://www.monumentvalleygame.com/
これ買ってクリアしてみたけどプログラム的にどうなってるもんなんかなぁと気になる。
(00:50)
は他称以外で用いてはいけない言葉である、ってどっかで見て、なるほどなぁと思って今に至る。
最初に見たのは ukai さんが書いてるか、 ukai さん関係だった気がするんだけど、晴耕雨ハック (http://sourceforge.jp/magazine/journals/sado/148) と混同してるかもしれない。
(00:05)
arton さんのところで Y-00 てのがあるのかーと知ったので
http://www.artonx.org/diary/20140430.html#p01
買う前はなんかうさんくさいなぁ…と思ってたんだけど、読んだ後も同様な印象だった。
というか終始 BB84 を攻撃してて、肝心の Y-00 の中身についてほとんど説明してないような…
(00:32)
http://www.amazon.co.jp/dp/4789838072
主に人に勧めるという観点で、Linkers & Loaders は教科書的にいい本ではあるけど、 GNU とか ELF に寄せたもうちょい実践的な本無いかなぁと思ったらあったので買ってみた。
ざーとながめたかんじ、なかなか勧められそうな感じで良い、と思う。ただまあそれなりに気になる点が。
P.97 ライブラリ・アーカイブどうしの場合には、先に見つかったほうのシンボルが優先されます
これはまー書いた人はわかってそうだけど、ダウトだよな。
$ cat foo.c void func() {} void foo() {} $ gcc -c foo.c && ar crus libfoo.a foo.o $ cat bar.c void func() {} void bar() {} $ gcc -c bar.c && ar crus libbar.a bar.o $ gcc main.c -L. -lfoo -lbar
とか、この記述だとエラーにならなさそうに見えるけど、エラーになる。
P.158 同じような .a の恐怖的な話。 -u も紹介してあげるとやさしい気がする
8.4 章、簡易ローダの作成。ここから先、なんで memcpy でロードするんだろう…って感じ。わざわざ ELF 書き換えツールを作って RWX にするとかしてるけど、たぶん本の記述量的にも実践的にも、ローダをリンクする時に 0x8048000 付近を避けて、ローダ内では mmap するのが良いと思う。ELF 書き換えツールもリンカスクリプトもいらなくて、ローダをリンクする時に
-static -Wl,-Ttext-segment=0x50000000
とかすればいいだけでないかなと。そのへんわかってないとは思えないんで、ちょっと意図がつかみかねるかんじ。 -Ttext-segment は最近だった気もするんで、まぁリンカスクリプトいじりは必要かもしれないけど。
あとローダがセクションヘッダ読むのも微妙だなぁと。これも mmap でやってりゃいらんと思うんだけど。
9.3 章、 undump の話。これも mmap すればいいやろ、って感じが。 P.197 の malloc により取得したメモリの考慮が必要、とかはちょっとなんの考慮が必要なのかわからない気がする。 PT_LOAD を全部ちゃんと復元すればたぶん動くと思うけど。
復元後に printf が動かなかった、って書いてあるけど、これはなんでだろう。あとひとつ気になるのは、復元中に fprintf とかしてるけど、これ当然 .data が塗り潰された後に動いてるのは単に運が良いだけなような、ていう。
なんか最後の方で実践的感が減ってる気がしたのが少し残念だった。でもまぁなんかでもよくまとまってる感じではあるかなぁ。
(01:06)
まずカタカナ混じってるので kernelvm とかでぐぐっても出にくいと覚えておくと良い
まあありきたりだけど刺激になる感じでよかった。
個人的に ARM64 の話が聞けたのがまず良かった。最近仕事でぐぐっててよく参照する個人ブログトップ3の人ってのがまた。
http://d.hatena.ne.jp/embedded/
ちなみに残り二人は隣に座ってた人と自分自身なんだが。
ARM64 は x64 同様昔のしがらみが減っていて…みたいなのを twitter で見たけど、 x86 => x64 より diff がでかいんじゃないかなぁとか。あと、今 CPU イチから作るとどうなるのかなぁとか気になる。 IA64 はそういう試みだったと思うんだけど、商業的に失敗しちゃったからなあ。そういうのでいうと Mill ってのが色々おかしくて面白い気がする。
http://millcomputing.com/topic/introduction-to-the-mill-cpu-programming-model-2/
レジスタが無い (SSA ぽい感じ) とか stack が別れてるとか。
あとは、 Rust の発表と qemu の発表が若いのに色々知っててすごいなぁとか思った。特に qemu の話は普通に symbolic execution とか知らなかったのでなるほどなぁとか思った。
あと、 qemu の TCG ぶんまわす部分は、 valgrind がわりと似てると思う。どっちが読みやすいかはよく知らない。 qemu は一度 TCG まわりいじって遊んだことあるんだけど、あまり読みにくいとは感じなかったのは、運がいい部分だけ触ってたか、単に相性のいいコードなのか、それか僕が見た時から大幅に変わってるか、かな。相性いい説は普通にありえるな、 TCC あんま抵抗ないし。
ネットワークの話がなんか一番おかしい気がしたけど、ただなんかあまりわからない話なのが残念。どうもネットワークは勉強する意欲がわかない
話的には Unicode の話も面白かったな。ていうか m17n とかの話はただでさえ、だいたい悲惨で面白いのに、話し方も面白いとかなりのコンテンツ力。
あとは PDP11 はみんな感心してたけど、どのくらい大変なのかいまいちピンと来なかった。というのは ICFPC とかで作るオモチャ CPU とどのくらい大変度に差があるのかな…ということでちょっと眺めてみた
https://github.com/kanorimon/pdp11
いやまあこれいきなり書くのはまぁ大変かな… getMnemonic がすごい。
日頃見てるドメイン的に syscall のとことか見たくなるんだけど、 fork で FD 閉じてるのはこれいいのかな。あと brk がなんもしてないけど色々動くもんだな。
あとだらだらしてる時に学生の人に学生ですかと話しかけられてみたり。社会人に見えない風体をしてるのは自覚してるので、似たような年代だと推測されたんでないかと思うんだけど、現実には15歳年上だった。
(00:58)
http://www.ioccc.org/1984/mullender.c
これを実行してみたいな。コンパイラ無いけど、たぶん a.out 作ればいい感じだよな。
つーことで適当にいじったら実行できた!
ORG 0 dw 0x108 ; NMAGIC dw 0xa2 ; text size dw 0 ; data size dw 0x100 ; bss size dw 0 dw 0 dw 0 dw 0 dw 277, 2525, -4129, 25, 0, 477, 1019, 0xbef, 0, 12800 dw -113, 21119, 0x52d7, -1006, -7151, 0, 0x4bc, 8196 dw 14880, 10541, 2056, 2056, 4548, 3044, -6716, 0x9 dw 4407, 6, 5568, 1, -30460, 0, 0x9, 5570, 512, -30419 dw 0x7e82, 496, 6, 0, 4, 1280, 15, 0, 4, 1280, 4, 0 dw 4, 0, 0, 0, 0x8, 0, 4, 0, ',', 0, 12, 0, 4, 0, '#' dw 0, 16, 0, 4, 0, 30, 0, 22, 0, 0x6176, 120, 25712 dw 'p', 29811, 'r', 29303, 29801, 'e'
nasm で作れる。 8進数を nasm は知らないみたいだったんで、適当に10進数に変換してある。
" :-)...." をひたすら出力するプログラムだったみたいだ。長年の謎が解けたので PDP-11 インタプリタには感謝しないと…ついでに出力できたアセンブリコード:
0: 0115 br 0x2c 2: 09dd jsr pc, *(r5)+ 4: efdf 0019 0000 sub *$0x21, *$0 a: 01dd br 0xffffffc6 c: 03fb beq 0x4 e: 0bef tst *-(pc) 10: 0000 .word 0 12: 3200 bit (r0), r0 14: ff8f setd 16: 527f 52d7 bis (r1), *$0x52f1 1a: fc12 setd 1c: e411 sub (r0)+, (r1)+ 1e: 0000 .word 0 20: 04bc bge 0xffffff9a 22: 2004 cmp r0, r4 24: 3a20 bit *-(r0), -(r0) 26: 292d cmp -(r4), *-(r5) 28: 0808 jsr r0, (r0) 2a: 0808 jsr r0, (r0) 2c: 11c4 mov pc, r4 2e: 0be4 tst -(r4) 30: e5c4 0009 sub $11, r4 34: 1137 0006 mov r4, 0x3e 38: 15c0 0001 mov $1, r0 3c: 8904 sys 4 3e: 0000 .word 0 40: 0009 .word 11 42: 15c2 0200 mov $1000, r2 46: 892d sys 5 48: 7e82 sob r2, 0x46 4a: 01f0 br 0x2c 4c: 0006 rtt 4e: 0000 .word 0 50: 0004 .word 4 52: 0500 blt 0x54 54: 000f .word 17 56: 0000 .word 0 58: 0004 .word 4 5a: 0500 blt 0x5c 5c: 0004 .word 4 5e: 0000 .word 0 60: 0004 .word 4 62: 0000 .word 0 64: 0000 .word 0 66: 0000 .word 0 68: 0008 .word 10 6a: 0000 .word 0 6c: 0004 .word 4 6e: 0000 .word 0 70: 002c .word 54 72: 0000 .word 0 74: 000c .word 14 76: 0000 .word 0 78: 0004 .word 4 7a: 0000 .word 0 7c: 0023 .word 43 7e: 0000 .word 0 80: 0010 .word 20 82: 0000 .word 0 84: 0004 .word 4 86: 0000 .word 0 88: 001e .word 36 8a: 0000 .word 0 8c: 0016 .word 26 8e: 0000 .word 0 90: 6176 0078 add r5, 170(sp) 94: 6470 0070 add (r1)+, 160(r0) 98: 7473 0072 ash 162(r3), r1 9c: 7277 7469 div 0x7509, r1 a0: 0065 jmp -(r5)
(01:59)
前 | 2014年 5月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。