トップ «前の日記(2006-08-15) 最新 次の日記(2006-08-17)» 編集

はじめてのにき

ここの位置付け

2004|11|
2005|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|

ToDo:


2006-08-16

_ えーと

メモリのどっかに関数アドレス置いて、 間接 call でぴょーんと飛べるはず。 でもそれだと opcode 自体書き換えてていかにもアレなので、 call => jmp => ってストーリーが無難かなぁ。

(02:45)

_ relocation @amd64

どうでもいいけど gcc -S より objdump -Sr の方が好きなんだよなぁ。

0000000000000000 <main>:
#include <stdio.h>
int main() {
   0:   55                      push   %rbp
   1:   48 89 e5                mov    %rsp,%rbp
        return (int)stdout;
   4:   48 8b 05 00 00 00 00    mov    0(%rip),%rax        # b <main+0xb>
                        7: R_X86_64_PC32        stdout+0xfffffffffffffffc
}
   b:   c9                      leaveq
   c:   c3                      retq

これが

0000000000400498 <main>:
#include <stdio.h>
int main() {
  400498:       55                      push   %rbp
  400499:       48 89 e5                mov    %rsp,%rbp
        return (int)stdout;
  40049c:       48 8b 05 ad 03 10 00    mov    1049517(%rip),%rax        # 50085
0 <__bss_start>
}
  4004a3:       c9                      leaveq
  4004a4:       c3                      retq

こうなってた

(11:33)

_ 習わない英単語

色々共感とか納得とかして面白い。

http://otsubo.info/contents/ewords/eword.html

マクドナルドはそれ以前に マックドーナルとかになってて聞き取れなかった。 For here or to go? とか聞かれたら たぶんそのままオウム返しにして、 相手が別の言葉で言いなおすのを待つな、たぶん。

Sorry? とか Pardon? は聞き取れてない時に使って、 オウム返しは聞き取れたけど意味が取れてない時に使うクセがついてるけど、 まぁ良い処世術な気がする。 オウム返しにしておけば、 「聞き取りはできたけど、意味が取れない」って伝わるだろうし。

(11:50)

_ かなり難しいクイズ

http://www.faireal.net/

普通に考えると、-40度で圧力かな。

(12:11)

_ PLT

#define _GNU_SOURCE
#include <math.h>
#include <dlfcn.h>
int main() {
        double (*c)(double) = dlsym(RTLD_DEFAULT, "cos");
        printf("%p\n", c);
//      return (int)cos;
}

は最後のコメントがあるか無いかで、 出力されるアドレスが全然違う。 要するに PLT が作られるか作られないか、ということだけど。

困るのは amd64 だと、 PLT が無い時に near call では届かないアドレスになっちゃう、ってこと。

あと、関数じゃなくて、 stdout みたいなものを 同じようにやってやると、 .bss になんか値が置かれるみたいなんだけど、 えーとこれどうやってやってるのかよくわからんなぁ…

(13:05)

_ OCPL

http://www.opencreation.org/ocm_ar1/stage3_1.php

はじめてしったよ。

(13:39)

_ firefoxをつかおう!

(14:32)

_ 論外

extension 入れた→ firefox さいきどう → extension は再起動したら有効になります。

なんでやねん。

(14:44)

_ stdarg

http://alohakun.blog7.fc2.com/blog-entry-412.html

int sum() {
    int *f = (int*)__builtin_frame_address(0) + 2;
    int s = 0;
    while (abs(*f) < 0x1000000) {
        s += *f;
        f++;
    }
    return s;
}

int main() {
    printf("1+...+1 = %d\n", sum(1));
    printf("1+...+2 = %d\n", sum(1,2));
    printf("1+...+3 = %d\n", sum(1,2,3));
    printf("1+...+4 = %d\n", sum(1,2,3,4));
    printf("1+...+5 = %d\n", sum(1,2,3,4,5));
    printf("1+...+6 = %d\n", sum(1,2,3,4,5,6));
    printf("1+...+7 = %d\n", sum(1,2,3,4,5,6,7));
    printf("1+...+8 = %d\n", sum(1,2,3,4,5,6,7,8));
    printf("1+...+9 = %d\n", sum(1,2,3,4,5,6,7,8,9));
}

まぁ無理。最適化ってなんですか。

(15:51)

_ RTTI

  • char は 7bit で ASCII以外存在しない
  • int は 31bit
  • ポインタも 31bit で先頭ビットが立つ
  • それ以外のサイズの変数は存在しない
  • 全メモリ最初に 0 クリアされる

くらいを仮定できると…って話か。

(15:57)

_ XUL/Migemo

うーん足りない。 これでは w3m にまだ勝てない。

つーわけで。

  • cmigemo-server が HTTP を解するようにする
  • 実験のために Apache にフォワードプロキシかます
  • 気合いとかで XUL/Migemo をいじる

(16:51)

_ w3m に JS を…!

とかマジでやろうかとか思ってたのはどうでもよくなった。

(19:51)

_ ぼくのましん

なんとなく書く。 3年もして読めば面白かろう。

u
メインマシン。 Celeron 1.7GHz, 512MB, 80GB, FC5, linux-2.6.15 。 Thinkpad R40e はすばらしい。何がすばらしいって R50e とかよりビデオチップがたぶん上。
u3
Compaq Presario 1210JP 。 Duron 800MHz, 128MB, 20GB, Debian etch, linux-2.6.7 。 1年単位で動きっぱなしだけど、特に何もしていないマシンで、たまに Linux 内のクロスプラットフォーム性を調べる場合くらいに動かすくらいだったけど最近 shinh.dyndns.org:80 になったので SVN サーバとかとして活躍するに違いない。
uk
玄箱。 PPC 200MHz, 64MB, 80GB, Debian etch, linux-2.4.17 。 ssh サバとか IRC プロキシとかバックアップサーバ。
uw
ThinkCentre 。 P4 2GHz, 256MB, 80GHz, WinXPPro とか記憶してるが本当か。適当に2万くらいで買った Windows 実験用デスクトップマシン。 IE7 とか入ってる。あと Geforce5700LE とか。
un
Dell のなんか。 Xeon 3.2GHz*2, 1GB, 120GB, FC5?, linux-2.6.? 。 NII で _あまってたのでひきとった_ ものごっつ速いマシン。 ICFPC で活躍した以外は能力の99.99%くらいをムダにしている。
um
Dell のなんか。 P4 2.53GHz, 1GB, 120GB, FC3, linux-2.6.? 。研究室であまってたのでひきとった、ぼんやり寝てるマシン。
bob
Libretto 。研究室で借りた。ダンボールの中で寝るのが仕事。 bob ということは研究室で 2番目に入手したマシンなのであろうと考えると心が痛む。 alice は現役で charlie はどっかへんなところにいるはず、 donkey もどっかで見た。 eve は代替わりしたものの eve.phys.s.u-tokyo.ac.jp として生きている。旧 eve は見ててもったいない。
uz
SLB500 。 ARM 400MHz 。 B500 を買ってしばらくして A300 がさびしくて死んだ。今は ARM 実験機でしかない。

(21:33)

_ というわけで

ぼくのプロンプトに i@u とか書いてあるのは そういうものと納得して下さいというか。

(21:34)

_ かこのましん

過去のマシンは u2 から順に数字を取っていくらしいけど そのルールは全然実践されていないというかその場の気分。

u2 は無印 Pen 133MHz, 64MB, 6GB とかのすばらしいマシン。 これで sdmkun とか作ったとかなんとか。 今となってはありえん。

あと uw とか u2 とか名前変わったりしてたけど 材料拾ってきたデスクトップが。 Athlon 750MHz => Athlon 700MHz => PenII 600Mhz などと バージョンダウンしていったのは記憶に新しいが なんというか理由は CPU 蹴ったとかほこりがつもったとかで つまり机の下の椅子の下というか 足元に裸で置かれていた不遇のマシンというか。

sayさんにものもらって uw とか u2 とか名前変わってたヤツは すばらしい進化を遂げたりしつつ、 まぁ俺はデスクトップを非常に雑に扱うということが よく教えてくれたマシンだった。

(22:06)

_ むしろ

http://d.hatena.ne.jp/ytqwerty/20060817#p1

拡大すればこれをなんとなく解読できる人間の脳はすばらしい気が

(22:22)

_ 今はもう動かない

u2

(22:23)

お名前:
E-mail:
コメント:
人生、宇宙、すべての答え
本日のリンク元

2006年
8月
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
1.shinh(2014-05-24 01:15) 2.shinh(2014-05-24 01:15) 3.Gus(2014-05-24 01:15)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h