ToDo:
まずカタカナ混じってるので 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扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。