2005-07-01から1ヶ月間の記事一覧

研究室での出来事

この日記を読んでのコメントをいただく。ループアンロールでもしたら?とのご意見をいただいたのですが、後になってレジスタをほとんど使い切っている状態なのを思い出したので今のまま追加しても効果は薄いと思います。IA-32は6本しかレジスタを持っていな…

民間活力とかいう迷言

http://www.mainichi-msn.co.jp/chihou/toyama/archive/news/2005/07/12/20050712ddlk16040547000c.html 整備新幹線と言えば並行在来線の問題、そんなわけで第三セクターの話でも。 まずなぜ第三セクターに移管されるかというと、新幹線が開業することで在来…

二の舞

“学校で”どころか家で普通に寝ていました。 昨日と全く同じように8時に寝落ち、11時起きという堕落。むしろ11時に起きられている方が謎。 昨日との相違としてはとにかくありえんくらいに眠い。幸せは夜ぐっすり眠れることだと思います(ぇ

寺の鐘の音が遠く聞こえてきた午前6時。少し前から雨が強くなり始め、今日も洗濯には不向きな天候。 さて、結局寝ないままこんな時間になってしまいました>< 今は眠くないのでたぶん学校で寝てると思います・・・。

不可眠

早く寝ようとしたところで昨日の就寝が朝8時だったせいか眠れません(ぉ 7月初めでプログラミングを中断しようと思っていたのは6月のこと。そして7月に入って10日ばかりの間にプログラミングをしなかった日の方が少ないという現実(汗 散々無駄にあがいてい…

虫川大杉(意味不明

やっぱりというべきか、ミスを発見したので訂正。 int _strncmp(void *buf, void *str, size_t size){ int *b = (int *)buf; int *s = (int *)str; unsigned int k = size >> 2; for(unsigned int i=0;i

更にもうちょっと

x86はLittleEndianなのでintやshortで比較すると4Byte目の大小から優先されて戻り値の正負がstrncmpと異なりうるという問題が・・・。 Endian変換にはbswap命令を使えばいいわけですが、Cから直接扱う方法を知らないので保留。元々等しいかどうかの確認のた…

しつこく・・・

いいかげんやめたらいいのに、と自分でも思うのですが、改善すべき点があるとなるともう少し粘りたくなるので。 上で"ntohl(b[i]) - ntohl(s[i])"を返すようにしたのですが、どうせなら減算までを1つの関数として実行すれば関数呼び出しの手間が少なくなって…

これで最後・・・かな?

strncmp()とおそらく同等の動作をするもの。というかmemcmp()か? int _strncmp(void *buf, void *str, size_t size){ int *b = (int *)buf; int *s = (int *)str; unsigned int k = size >> 2; for(unsigned int i=0;i

手間の割に

3つ目の引数、sizeの指定において0でないという仮定ができるとすれば、for文ではなくdo〜while文を用いることでもう少し削れそうです。 上のintncmp()では dec eax @2: mov ebx,dword ptr [ecx+4*eax] xor ebx,dword ptr [edx+4*eax] je short @3 mov eax,1 …

もう少し引っ張ってみる

先日のintncmp()だのintcmp()だのは何がしたかったかというと、x86+Windowsを前提に考えると現状では32bitレジスタを使うわけで、char(8bit)同士の比較ではせっかくの32bitレジスタも下位8bitのみしか使わないので効率が悪いではないか、ということが言いた…

早起き->残業->遅起き

研究室に残っていたのがいい具合にコンバータの役割を果たしたらしく、昼起床の人間に逆戻り>< 昨日はAdminの作業を横から眺める研修員状態。時折口出しをするくらい。夏になったら実験がてらWindowsServerのライセンスをいただいて入れるかな・・・。先日…

結局もう1パターン

int _strncmp(void *buf, void *str, size_t size){ int *b = (int *)buf; int *s = (int *)str; unsigned int k = size >> 2; for(unsigned int i=0;i

微妙、とか言ってみたりする

http://www.watch.impress.co.jp/akiba/hotline/20050709/ni_i_m4.html#tk7m \24kも払ってKN400AでRTL8100Cなボードとは・・・。 FlexATXでGeodeNX対応というところには価値があるかもしれませんが、個人的にはどうかと思います。i82541が載っているならまだ…

早起きは・・・ゴミ出しの益(ぇ

早く起きてもCとかアセンブラとかにかまけていたら昼になっています。2週間くらい前に似たようなことがあった気が・・・。 Cどころかアセンブラにまで片足を突っ込んできたので抜けなくなる前に泥沼から這い出ることにします。 こういった細かいところにこだ…

文字列の比較とキャスト

Javaをやらないとと思いつつもC言語にて生きるおみ。 今日は文字列において比較する長さが既に16/32bitの整数倍であると分かっている場合、char *を用いたstrcmp()/strncmp()とint *あるいはshort *にキャストしたものはどちらが高速であるかという虚無をし…

+ビット演算(+訂正)

ろぎ氏に指摘されたようにビット演算で比較してみた。 if(b[i]-s[i]){ return 1; } ↓誤 この行を if(b[i]&s[i]){ return 1; } こう変えただけでかなりの高速化。↓正 if(b[i]^s[i]){ return 1; } 4文字の場合、先に挙げたintcmp()において同様のビット演算を…

散乱思考

先週の続きを少し試してみたものの、結局撃沈>< 思考が滞ると妙なことを考え始めるわけですが、今日は久々に曲を頭に思い描いていました。即興だったのでもう再現できませんが、珍しくそれなりのものだった感じ。こういうときにメモをするという習慣は大事…

2年ぶり

D.C.S.S.を見ていました。 キャストやキャラクター紹介で出ていなかったので気になってはいたのですが、やはり前作のメインキャラを欠いての新シリーズということらしいです。 スタッフもかなり変わったようなので若干不安でしたが、監督が前作に関わってい…

制約問題(ぇ

先日破損した携帯電話ですが、電池が持たないので機種変更するつもりでまずは下調べにと量販店へ。 前提となる条件としては現状維持ということでauかつCDMA 1x。WINはガク割がきかないので却下。平時の通話料は無料通話分でまかなえる程度なので基本使用料の…

田舎

先週から見ている「絶対少年」。どうも今日で7話目らしく、つまり6話目から見始めたことになります。そんなわけで大まかにしか話の筋が分からない(汗 なぜ見ようと思ったかというと例によってCooRieがOPを歌っているからで、完全にOP目当てでした。 そのOP…

折り返し

ルミナリエカレンダーを裏返しつつ、今年も半分終わってしまったことを実感。今年の前半は“怒濤”という形容をよく使ったし、実際そんな状況だった。後半はどうなることやら。話は変わって、今日は久しぶりにC言語をまったく扱わない1日でした。ここのところ…

ばぐばぐ

夕方、公認の作業としてプログラミングをしました。 出された課題は6問。3人1組でまずは1問目を解きながら2人には後ろで他の問題を当たってもらう。 25分くらいで解き終わる。続いて3番目の問題を解くことに。これも試行錯誤しながら40分ほどで解き終え、正…