アセンブラ

| コメント(2) | トラックバック(0)

約1週間ぶりに研究室に行きまして、机の掃除をようやくした。
随分綺麗になったかな。


掃除も終わって、まったり過ごすかなぁと思ってたら教授からヘビーなタスクを割り振られた。
なんでも現状のGAのCプログラムにおいて、(アセンブラのコードで)1世代平均何ステップ実行しているのか求めて欲しいと。単純に実行時間が短かくなればステップが減ったという根拠にはならないかなぁと思ったがメモリのキャッシュもあるし、論文に載せる以上そういう根拠となるデータも欲しいとのこと。(´・ω・`)

とりあえず今日はアセンブラのコードをコンパイラに吐かして、Cのみのソースとともに紙にプリントアウト。アセンブラ得意なdesutanと共にCのソースをアセンブラ何ステップか紙のほうに書き込み。(我ながらやってることがローテクだなぁと思うが、参照はディスプレイ、書き込みは紙の方が優れているんじゃないかなぁと思ってる。)

一応この作業を途中までやって今日は終わり。木曜はコレの残りと確率計算だなぁ...。うまくいけるか未だに不安ですが。

---

アセンブラのソースを見ていると色々なところで新しい発見がある。
例えば、もはやコーディングの悪例として名高いグローバル変数。
あれって普通の変数同様に使用する場面になったらその場で参照されるのだろうと思ってが、レジスタに余裕があるときはグローバル変数を使う関数を呼び出す段階で参照するのね。アセンブラのソースを見て、初めて知った。

後は
int i=j=0;
みたいな2変数の初期化。
素直に2回初期化作業をするのかなと思ったが、ところがどっこい、xorを使って1ステップで済ましてる。

普段コードを書いてるとこの辺のことは全然意識しないが、実際にアセンブラのソースをみるとなかなか熱いことをしてる。そんなことに気づいた一日であった。

トラックバック(0)

トラックバックURL: http://hoge.sub.jp/blog-cgi/mt/mt-tb.cgi/286

コメント(2)

https://www.codeblog.org/blog/shudo/20060723.html#p01
rdtsc命令を使ってクロック数で代替できるかもしれませんよ。

ぉ、有益な情報ありがとう。とりあえずbookmarkしておこう...

個人的には一番下当たりにVIA向けの命令が気になる...。Pen4より十数倍速いらしい内蔵ACEが使えそうねぇ。

コメントする

このブログ記事について

このページは、Lyoが2006年7月26日 01:09に書いたブログ記事です。

ひとつ前のブログ記事は「やってしまったー」です。

次のブログ記事は「久々にRockなCDを買った」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

OpenID対応しています OpenIDについて
Powered by Movable Type 4.261