せっかちな人々(まったりも可)
どんなささいなことでも構いません.
面白い最適化のアイデアがありましたら書き込んで下さい.
無論雑談も大歓迎です.
新規書き込みスレッド表示|日付順表示|開設者ホームページへ戻るヘルプ
表示件数: 件/頁 
より新しい記事へ ← 222 件の投稿中 172件目〜123件目を表示 → より前の記事へ
194:Re^8: 分岐予測の検証2000/05/29 (月) 18:20 コメント数:  4件
  さ〜  |   http://D5.w3.to/
ひさしぶりです。絶対値はぼろ負けなので
書きこめませんでした(^^;

>  分岐予測をはじめとして、L1/L2キャッシュのヒット率、命令の実行数等
>  数十項目について計測可能です(^^; とはいえ使用方法や使用用途が一般向けじゃ
>  ないので今後配布に関してはどうしようかなぁ..って思っている最中です。

むちゃむちゃ欲しいです〜。
L1/L2キャッシュのヒット率はどのように計測するのでしょうか?
今、画像転送ルーチンの最適化をしてるんですが、
メインメモリがむちゃくちゃ遅いことに気がつきました。
SDRAMだと最速でも10clock中4clockしか転送に使っていないそうで。
当然、エフェクトかけようとするとL2キャッシュに
いれたくなるんですが、L2キャッシュってどうなってねん・・・

そもそもL2キャッシュがCPUコアと同クロック動作しているとして、
L2へ見に行くと何クロックかかるのかもわかりません。
マニュアルも探しましたが、そのあたりの記述を見つけられませんでした。

という感じなので、ぜひ公開して欲しいです。
よろしくお願いします。
新規投稿この投稿にリプライ投稿者削除

193:Re^7: 分岐予測の検証2000/05/28 (日) 22:23 コメント数:  5件
  PEN@海猫  |
> 午後を一緒に作ってるPENさんがなにやら怪しいドライバをくださったのでそれを使ってみます。
> #分岐予測成功の回数を測定出来るらしい。

 ぜんぜん怪しくないですよ。使い方を誤るとOSが問答無用で落ちますが。
 分岐予測をはじめとして、L1/L2キャッシュのヒット率、命令の実行数等
 数十項目について計測可能です(^^; とはいえ使用方法や使用用途が一般向けじゃ
 ないので今後配布に関してはどうしようかなぁ..って思っている最中です。
 
# ポカミスで開発中何度OSを飛ばしたことか(T_T)
新規投稿この投稿にリプライ投稿者削除

192:Re^6: 分岐予測の検証2000/05/24 (水) 16:21 コメント数:  6件
  へるみ  |
>こういうのって、はまってなんぼ、
>みたいなとこあるので
>はまりまくりましょう:-P
午後を一緒に作ってるPENさんがなにやら怪しいドライバをくださったのでそれを使ってみます。
#分岐予測成功の回数を測定出来るらしい。
新規投稿この投稿にリプライ投稿者削除

191:Re^5: 分岐予測の検証2000/05/23 (火) 10:09 コメント数:  7件
  dsk  |
> PIIIは一段階の分岐予測ではなく二段階だそうです。
> この方式でもdskさんが書かれた32周期のパターンを食わせると分岐予測がはず
> れるのは理解できました。
> 各パターンごとに分岐する/しないが交互にくるので状態遷移もぐるぐる同じと
> ころを回ってると。
結局(2段階目の)状態が分岐するとしないの境目で交互になるはずです。

> 0000100001の周期5のデータでは...
> う〜ん、やはり実行時間がかかるとは思えませんね。
ループがきついにしても 1111に対する(2ビットの)状態が分岐するほうに
傾くだけなので、00001の繰り返しはかならずヒットしそうですね。

> #しかし、泥沼にはまってしまった。こだわるつもりはなかったのに...
こういうのって、はまってなんぼ、みたいなとこあるので
はまりまくりましょう:-P
新規投稿この投稿にリプライ投稿者削除

190:Re^4: 分岐予測の検証2000/05/19 (金) 20:44 コメント数:  8件
  へるみ  |
PIIIは一段階の分岐予測ではなく二段階だそうです。
>http://www.hi-ho.ne.jp/~kaz1-iwata/bbs/index.shtml
この方式でもdskさんが書かれた32周期のパターンを食わせると分岐予測がはずれるのは理解できました。
各パターンごとに分岐する/しないが交互にくるので状態遷移もぐるぐる同じところを回ってると。

0000100001の周期5のデータでは...
う〜ん、やはり実行時間がかかるとは思えませんね。

Mamiyaさん
ループは確かに短いですが、周期2,3,4では特に問題が発生していないように見えるので直接の原因ではないような気がします。
#チェックする必要はありますが。

dskさん
>条件分岐は全て同一の統計をとっているか?
各アドレス毎にとってるようなので大丈夫だと思います。

#しかし、泥沼にはまってしまった。こだわるつもりはなかったのに...
新規投稿この投稿にリプライ投稿者削除

189:Re^3: 分岐予測の検証2000/05/19 (金) 19:32 コメント数:  9件
  dsk  |
> テストコードのループがきつすぎるという事はないですよね。
ループによる分岐が分岐予測の観測を狂わせているか?
ってことですね。分岐予測の統計が、条件ごとにとられているか
それとも、条件分岐は全て同一の統計をとっているか?
によって異なりそうですね。

新規投稿この投稿にリプライ投稿者削除

188:Re^2: 分岐予測の検証2000/05/19 (金) 14:46 コメント数:  10件
  Mamiya  |
> ただ、mod 5では予測が外れるはずがないのに実測値が悪いところを見ると他にも何かやってるのかも。
テストコードのループがきつすぎるという事はないですよね。
新規投稿この投稿にリプライ投稿者削除

187:Re^4: 分岐予測の検証2000/05/18 (木) 17:51 コメント数:  0件
  dsk  |
> mod5は 00001 00001 00001,...のつもりです。
> これだと常にヒットするはずだと思います。
5回の統計を完全に外すパターンと思いました。
(同様に作ると周期64の列が出来ます。)
00001の繰り返しだと完全にヒットしそうですね。
新規投稿この投稿にリプライ投稿者削除

186:Re^3: 分岐予測の検証2000/05/17 (水) 11:47 コメント数:  1件
  へるみ  |
>> mod 5では予測が外れるはずがないのに
>これの理由が分かりません。mod5 や mod6 のパターンとは?
言葉たらずでした。
mod5は 00001 00001 00001,...のつもりです。
これだと常にヒットするはずだと思います。
mod6は 000001 000001 000001なので
0000のパターンのときに予測がはずれるだろうと予測してます。
もう少し詳しく調べてみます。
新規投稿この投稿にリプライ投稿者削除

185:Re^3: 分岐予測の検証2000/05/16 (火) 10:57 コメント数:  0件
  dsk  |
自己レス
> と思います。(有限オートマトンに対応する記号力学系を表わす用語が
> あったんだけど、忘れた。もう3年以上前のことだし。)
ソフィック系、と言うんだった。それだけ。
新規投稿この投稿にリプライ投稿者削除

184:Re^2: 分岐予測の検証2000/05/16 (火) 09:11 コメント数:  3件
  dsk  |
> ずぼしでした。
> 結果はPIIIでは10clk/loop。完全に分岐予測がはずれていると思われます。
4回の統計という予想を裏付ける結果ですね。

> この理屈ならmod 6のパターンで実験した場合、
> 6回中2回分岐予測が外れるはずなので、
> ...
> mod 5では予測が外れるはずがないのに
これの理由が分かりません。mod5 や mod6 のパターンとは?

> PS.
> ところでこのパターンって対称性を除くとuniqなんでしょうか。
過去の4ビットと内部状態の16(=2^4)ビットから次のビットを生成し、
使用した内部状態のビットを反転するという作業を繰り返すとパターン
ができますが、これは高々2^20通りなので eventualy periodic
になります。そこで、過去4ビットを0000内部状態を1111111111111111
から始めて生成した周期部分を抜き出すとこうなります。
一般に、記号力学系のアトラクタは結構複雑なので、恐らく一意ではない
と思います。(有限オートマトンに対応する記号力学系を表わす用語が
あったんだけど、忘れた。もう3年以上前のことだし。)

新規投稿この投稿にリプライ投稿者削除

183:Re: 分岐予測の検証2000/05/15 (月) 21:33 コメント数:  15件
  へるみ  |
ずぼしでした。
結果はPIIIでは10clk/loop。完全に分岐予測がはずれていると思われます。
この理屈ならmod 6のパターンで実験した場合、6回中2回分岐予測が外れるはずなので、
4/6 * 4000 + 2/6 * 10000 = 6000
となるはず。で、実測値もそれっぽい。
ただ、mod 5では予測が外れるはずがないのに実測値が悪いところを見ると他にも何かやってるのかも。

ちなみにAthlonではこの分岐予測方式ではないようです。
5clk/loopしかかからなかったので分岐予測は当たってる模様。

PS.
ところでこのパターンって対称性を除くとuniqなんでしょうか。
ちょっと考えただけではわからなかった(^^;

新規投稿この投稿にリプライ投稿者削除

182:Re: 分岐予測の検証2000/05/15 (月) 10:39 コメント数:  0件
  へるみ  |
>最後のほうですべて予測が外れるはず。
今からセミナーなので後でゆっくり考えます。
分岐予測についてはどこかに詳しい解説があったと思うのだけど見つからない...

>#誕生日だったのにせわしなくてごめんね
いやいや、こちらこそ。次回は自作(^H^H)手作りお菓子を食べませう。
新規投稿この投稿にリプライ投稿者削除

181:分岐予測の検証2000/05/15 (月) 08:55 コメント数:  17件
  dsk  |
過去4回の分岐の結果まで統計を取っているとるとすると、
10111001 10101100 01010010 00001111
というパターンの繰り返しだと最後のほうですべて予測が外れるはず。

( 1はjumpする0はjumpしない。スペースは読みやすくするためだけで
特に意味はないです。)

#誕生日だったのにせわしなくてごめんね
新規投稿この投稿にリプライ投稿者削除

180:Re: ゴールデンウィークは2000/05/11 (木) 10:35 コメント数:  0件
  Hash  |
> PEN氏と某ルーチンのasm化。(凄い暗い(^^;)
> 二人ともバグがとれず泥沼にはまり、腹減った〜と言いつつやってました。

くは、その気力を少し分けてください(笑)

新規投稿この投稿にリプライ投稿者削除

179:ゴールデンウィークは2000/05/08 (月) 16:05 コメント数:  1件
  へるみ  |
PEN氏と某ルーチンのasm化。(凄い暗い(^^;)
二人ともバグがとれず泥沼にはまり、腹減った〜と言いつつやってました。

○時間経過後、自分のバグがとれたことろで、ふとPENさんのコードを見て、
「同符合を仮定しないとFPUの比較をreg32でするのは無理だよ(*)」
「...もっと早く言って欲しかった」とPEN氏の声は空虚でした。

(*)http://www.csl.sony.co.jp/person/fnami/pentopt.htm#INTEGER-FLOATING
では
<pre>
MOV EAX, [a]
MOV EBX, [b]
MOV ECX, EAX
MOV EDX, EBX
SAR ECX, 31 ; 符号ビットをコピー
AND EAX, 7FFFFFFFH ; 符号ビットを除去
SAR EDX, 31
AND EBX, 7FFFFFFFH
XOR EAX, ECX ; 符号ビットがセットされていたら、二の補数にする
XOR EBX, EDX
SUB EAX, ECX
SUB EBX, EDX
CMP EAX, EBX
JL ASmallerThanB ; 符号つき比較
</pre>
なんてコードがありますが、PEN氏はSSEで書いてました。
新規投稿この投稿にリプライ投稿者削除

178:Re: 質問です。2000/05/08 (月) 15:53 コメント数:  0件
  へるみ  |
>waveをMP3に変換すると音量って小さくなるものなのでしょうか?
そんなことは無いです。
ただ、もとのwavの絶対的な音量が小さいのなら正規化するソフトを使って16bitレンジいっぱいに広げてからmp3にした方がよいかと。
新規投稿この投稿にリプライ投稿者削除

177:質問です。2000/05/05 (金) 17:25 コメント数:  1件
  red  |
ありがとうございます。
ありがたく使わせて頂いてます。
で質問なのですが・・・・
waveをMP3に変換すると音量って小さくなるものなのでしょうか?

新規投稿この投稿にリプライ投稿者削除

176:Re^3: 二項級数2000/04/24 (月) 17:17 コメント数:  0件
  へるみ  |
>a = 1.0+1.42606e-06
>b = 1/3-0.000262124
>c = 1/5+0.0117245
>とすると、大体 1e-7 の精度が 5次の項までで達成できます。

なるほど。結構効果がありますね。
私のpageの方法では常に値が小さくなるので補正すればいいだろうなとは
思いましたが、やり方がよく分からなかったのでほっておきました。
ありがとうございます。
新規投稿この投稿にリプライ投稿者削除

175:リンクさせてもらってます2000/04/24 (月) 00:21 コメント数:  0件
  び〜ん  |   http://i.am/yuukii/
どうも、午後のこ〜だ〜うちのペンチアム3−700で動かしたら、早い早いの。
ってことで、感謝感謝。
ホームページにリンクをつけてます。半分私的リンクなのですが、
問題があればいってください。
新規投稿この投稿にリプライ投稿者削除

174:Re^2: 二項級数2000/04/22 (土) 17:02 コメント数:  1件
  initialT  |
> >logを二項級数で求めていますが、あまりいい方法ではないですね。
> logのマクローリン展開の収束が遅いのは分かっています。
> だからちょっとトリッキーな一次分数変換をしているのですが。
>
> 断言は出来ないけどチェビシェフ多項式から出発して近似計算を
> 行なったとしても結局は私のpageに書いた式になるような気がします。

確かに、一次分数変換して、z を求めるところまでは誰が書いても
同じになると思います。

> >近似多項式の係数を求めるのがらくちんだとおもいます
> 比較したいのでよろしくお願いします。
てなわけで、ちょっとやってみました。

log(x)=2*z*(a+z*z*(b+z*z*c))+log(2)/2.0

と、したとき、

a = 1.0+1.42606e-06
b = 1/3-0.000262124
c = 1/5+0.0117245

とすると、大体 1e-7 の精度が 5次の項までで達成できます。
マクローリン展開で 7次の項まで求めたときより誤差は大きいですが、
最大誤差 1e-7 の単精度が実現できればいいので、これで十分でしょう
新規投稿この投稿にリプライ投稿者削除

173:Re: 二項級数2000/04/21 (金) 21:47 コメント数:  2件
  へるみ  |
>logを二項級数で求めていますが、あまりいい方法ではないですね。
logのマクローリン展開の収束が遅いのは分かっています。
だからちょっとトリッキーな一次分数変換をしているのですが。

断言は出来ないけどチェビシェフ多項式から出発して近似計算を
行なったとしても結局は私のpageに書いた式になるような気がします。

>近似多項式の係数を求めるのがらくちんだとおもいます
比較したいのでよろしくお願いします。
新規投稿この投稿にリプライ投稿者削除

172:二項級数2000/04/20 (木) 14:19 コメント数:  3件
  initialT  |
3DNow! のところで log を二項級数で求めていますが、
あまりいい方法ではないですね。

適当な関数を有限項の多項式で近似する場合、引数の範囲がかぎられている
ならば、二項級数よりいい近似式があります。

チェビシェフ多項式の和を使うってのがいいと思うんですが、計算が面倒なので、

gnuplot と gnufit 使って近似多項式の係数を求める

ってのがらくちんだとおもいます(数学不得意な私)
新規投稿この投稿にリプライ投稿者削除

171:Re: 分岐2000/04/19 (水) 15:56 コメント数:  0件
  へるみ  |
>ということで、たんに分岐の絶対数を減らすだけ
>では駄目なんじゃないかな?

そうですね。実際のところはやってみないとなんともいえないのかも。
というわけで久しぶりの更新(少しだけ)です。
他のCPUの結果も欲しいので調査して欲しいな。
Linux系ならmakeだけできます。
NASMは適当にとってきて下さい。

Win用(Enhanced 3D Now!対応)NASMは
>http://homepage1.nifty.com/herumi/soft/nasm098-e3dn.lzh
に置いてます。
Winでbuildするには展開後改行コードと漢字コードを変換します。
test.nasは[設定]で
[コマンド] -DWIN32 -f win32 $(InputName).nas
[出力] $(InputName).obj
でよかったと思う。
新規投稿この投稿にリプライ投稿者削除

170:分岐2000/04/17 (月) 18:04 コメント数:  1件
  dsk  |
例えば分岐予測を採用しているCPUの場合、
20%予想が外れる分岐が2つと
50%予想が外れる分岐が1つでは、
前者の方がパイプラインのフラッシュの回数がすくないので
優秀なのでは?
ということで、たんに分岐の絶対数を減らすだけでは駄目なんじゃないかな?
新規投稿この投稿にリプライ投稿者削除

169:Re^3: 並列絶対値2000/04/10 (月) 10:45 コメント数:  0件
  へるみ  |
ごぶさたしてごめんなさい。
ようやくごちゃごちゃした用事が終わって一段落です。
これからはなるべく更新するよう努めます。
小次郎さん
x = a|M - b&m
f = (a&~b) | (a^~b) & x
f = (f>>7)&1
f = (f+m)^M = ( a>=b) ? 0 : -1
というコードしか思いつけませんでした。
ちょっと降参して別のことします(笑)
新規投稿この投稿にリプライ投稿者削除

168:Re^2: 並列絶対値2000/03/31 (金) 21:19 コメント数:  1件
  小次郎  |
> 電車の中でいろいろ考えてるのですが、20命令以内ではどうも出来ません。
> 小次郎さんはどんなアルゴリズムでやっていますか?
> 私は
> M=0x80808080, m=0x7F7F7F7Fとして
> x=a|M - b&mを求めた後マスク&符合処理をしようとしてるんですが...

 私は result = ( a > b ) ? ( a - b ) : ( b - a ) ; なので
tmp = ( a > b ) ? 0 : ( a ^ b ) ;
result = ( a ^ tmp ) - ( b ^ tmp ) ;
という感じで作ってみました。(もちろん、SIMDで。)

 ( a > b ) ? 0 : 0xff がもう少し短く作れないか考えているところですが…
#MMXだとラクなんですけどね(笑)
新規投稿この投稿にリプライ投稿者削除

167:Re:並列絶対値2000/03/30 (木) 13:28 コメント数:  2件
  へるみ  |
電車の中でいろいろ考えてるのですが、20命令以内ではどうも出来ません。
小次郎さんはどんなアルゴリズムでやっていますか?
私は
M=0x80808080, m=0x7F7F7F7Fとして
x=a|M - b&mを求めた後マスク&符合処理をしようとしてるんですが...
新規投稿この投稿にリプライ投稿者削除

166:K6-III 70x5で復活2000/03/27 (月) 13:11 コメント数:  0件
  へるみ  |
取り敢えずほぼマシントラブルがでつくしたと思うので
滞っていたwebの更新もぼちぼちやります。
しかしK6-IIIのL2キャッシュって速いですね。
新規投稿この投稿にリプライ投稿者削除

165:Re^5: Retでループ(Pushしないで)2000/03/22 (水) 13:06 コメント数:  4件
  へるみ  |
>試しに作ってみたら18命令…う〜ん、いまいち(^^;
私もそんな感じ(^^;
ただ最近異常にマシントラブルが多くてプログラムを考える時間と気力がありません。
先日ずっと安定して使っていたマシン(4年以上)がおかしくなって現在P5 105MHzで使用中。webの更新が途絶えているのでなんとかしたいのですが...
新規投稿この投稿にリプライ投稿者削除

164:Re^4: Retでループ(Pushしないで)2000/03/21 (火) 02:10 コメント数:  5件
  小次郎  |
> #並列絶対値、むずいです。なかなか良いアイデアが浮かばない...

 試しに作ってみたら18命令…う〜ん、いまいち(^^;

> P5以降やK7には他の情報も調べられるようですが、win環境では
> 使うのは大変。(PENさん早く作って欲しいな(^^; )

 rdpmc命令はK6には無いんでしたっけ…。
 MIIを買ってくるかな〜(笑)
新規投稿この投稿にリプライ投稿者削除

163:Re^5: Retでループ(Pushしないで)2000/03/21 (火) 00:18 コメント数:  0件
  鹿原 淳  |   http://www.proc.org.tohoku.ac.jp/~kabbalah/
> Vsync期間計測とかのPCM音源の演奏位置取得にこれ↑を使っているんですが、
> この機能の精度は信頼しても良い物なのでしょうか?
> 殆ど唯一絶対のタイマー値として採用してしまっていますが・・・(^^;

精度は信用できますよ。
ただ1つだけ問題があるとすれば、フリーランタイマはUG/HG/HR以降にしかない
ということでしょうか。

…2代目以前にはインターバルタイマIIすらないんだよなあ。どうすんだろう(^^;
新規投稿この投稿にリプライ投稿者削除

162:Re^5: Retでループ(Pushしないで)2000/03/20 (月) 20:54 コメント数:  0件
  へるみ  |
大丈夫だと思いますよ。
以前VSYNC割り込みで音声と動画を同期させるプログラムを作ったことがあったのですが、再生し続けると微妙にずれが大きくなっていって困ってました。
けど、このタイマを使ったら完全に同期できましたから。
新規投稿この投稿にリプライ投稿者削除

160:Re^4: Retでループ(Pushしないで)2000/03/17 (金) 21:50 コメント数:  2件
  DJ☆Uchi  |   http://homepage1.nifty.com/uchi/
> あと、TOWNSなら mov dx,26h/in ax,dxではさめば1μ秒
> 精度の値が出ますね。
> 65535μ秒=0.065秒を超えるとフローしますけど。

Vsync期間計測とかのPCM音源の演奏位置取得にこれ↑を使っているんですが、
この機能の精度は信頼しても良い物なのでしょうか?
殆ど唯一絶対のタイマー値として採用してしまっていますが・・・(^^;
新規投稿この投稿にリプライ投稿者削除

159:Re^3: Retでループ(Pushしないで)2000/03/17 (金) 11:25 コメント数:  9件
  へるみ  |
#並列絶対値、むずいです。なかなか良いアイデアが浮かばない...
>rdtsc命令というP5以降(K5以降)に搭載された新命令
午後のソースのclk.nasでも使ってます。
for(i=0;i<count;i++){
clkbegin();
計りたい部分
clkend();
}

{
extern int CLKcount; extern float CLKclock;
printf("ave=%f(%d)\n", CLKclock/CLKcount, CLKcount);
}
で平均クロックが表示されます。
厳密にするならrdtsc自体のクロック数なんかを引き算しないと
いけないかもしれませんがまあ特に問題ないでしょう。
P5以降やK7には他の情報も調べられるようですが、win環境では
使うのは大変。(PENさん早く作って欲しいな(^^; )

あと、TOWNSなら mov dx,26h/in ax,dxではさめば1μ秒
精度の値が出ますね。
65535μ秒=0.065秒を超えるとフローしますけど。
新規投稿この投稿にリプライ投稿者削除

158:Re: Retでループ(Pushしないで)2000/03/16 (木) 16:36 コメント数:  0件
  Mamiya  |
おひさしぶりです。

>  これをP55C/P6以降などのReturn Stack Bufferを持つ
> CPUでも使うことができないかなと考えていました。
RSBからあふれても大丈夫です。
なぜならRSBがいっぱいになった時点で通常の分岐予測が働くため、
前と同じ場所に分岐すると予測されるからです。
最後の脱出は予測失敗しますが
新規投稿この投稿にリプライ投稿者削除

157:Re^2: Retでループ(Pushしないで)2000/03/16 (木) 03:42 コメント数:  10件
  小次郎  |
> 解析プログラムによっては検出して解析してくれたりしますね(苦笑)
> でも、386命令に有効ないい逆アセンブラ持ってないからアレですけど(^^;;

 積極的に解析していたときはZ80&自作解析ツールだったりしたので
困りました。(笑)

> 検証するときクロック数を計る方法とかあるみたいですけど、
> どこみたらいいですか?(探すのものぐさ(汗))

 「パソコンはおもちゃ」→「マイナーなのが好き」→「ど〜でもいいけど」に…
…すみません(^^;>へるみさん

 rdtsc命令というP5以降(K5以降)に搭載された新命令を使いますので、
「rdtsc」をキーワードとしてお探しになるとよいかと思います。
新規投稿この投稿にリプライ投稿者削除

156:Re: Retでループ(Pushしないで)2000/03/16 (木) 01:40 コメント数:  11件
  なべちゃん@abk  |
小次郎さん
>  ループする回数だけスタックにアドレスを置いておき、
> Retでループするというのが新鮮でした。

ループの最適化でレジスタがもっと欲しくなった時に思い付きました(^^;
最近(半年以内)のことです。
ただ、スタックを生成してる時間が、
どれくらいネックになるかなぁとも思います(展開しても)。

>#アドレスをpushしてretでジャンプすること自体は
>#解析しにくいようにしたプログラム(笑)で見かけますが…

解析プログラムによっては検出して解析してくれたりしますね(苦笑)
でも、386命令に有効ないい逆アセンブラ持ってないからアレですけど(^^;;

> #これが有効かどうかはテストしていなかったり…(^^;

検証するときクロック数を計る方法とかあるみたいですけど、
どこみたらいいですか?(探すのものぐさ(汗))

いつも、かなりの回数ループさせて、1/100秒で計ってるもので...(^^;;
#だからあんまり計ったりしない(汗

自分で考えた方法だからぜひ実用について検証してみたいです(^^;
新規投稿この投稿にリプライ投稿者削除

154:Retでループ(Pushしないで)2000/03/16 (木) 00:55 コメント数:  13件
  小次郎  |
 ループする回数だけスタックにアドレスを置いておき、
Retでループするというのが新鮮でした。

 これをP55C/P6以降などのReturn Stack Bufferを持つ
CPUでも使うことができないかなと考えていました。

#アドレスをpushしてretでジャンプすること自体は
#解析しにくいようにしたプログラム(笑)で
#見かけますが…

lptop:
    (ループ内処理)
    dec   ecx
    jnz   lptop
lpend:

なら

    jmp   l2
l1:
    dec   ecx
    jz   lptop
    call  l1
lptop:
    (ループ内処理)
    ret
l2:
    call  l1
lpend:

で、イケそうだと思うのですがどうでしょうか。

 これなら、RSBに収まればループのRETにおける
分岐ミスもなくなりそうですし。

#これが有効かどうかはテストしていなかったり…(^^;
新規投稿この投稿にリプライ投稿者削除

153:Re^3: 雑談2000/03/14 (火) 02:26 コメント数:  0件
  小次郎  |
> #Athlon500->600への改造に失敗して結局Athlon600を買い直しました(T_T)
> #2カ月の命であった。なむさん。

 欲しいですね〜<Athlon
 雷鳥+AMD760が出まわるあたりで懐が暖かければ…(と、言うだけ思うだけ)

> 小次郎さん、鹿原さん
> AGIストールやパーシャルレジスタストールの説明ありがとうございます。
> なんだか分けが分からなくなりました(^^;
> いくら離れてても出るのではチェックしにくいですね。

 AthlonのAGIストールの話はかなり怪しいです。
 資料を読んだところ、そう書いてあるように「思えた」だけなので。
#英語力の無さが痛い…

 かといって、実験で確かめられるようなものでもない気がしますが。
 とりあえず、Athlonでもメモリアクセスする命令を極端に連続で
並べない方がいいということなのでしょうかね。
新規投稿この投稿にリプライ投稿者削除


より新しい記事へ ← 222 件の投稿中 172件目〜123件目を表示 → より前の記事へ
表示件数: 件/頁 

パスワード:


Copyright(C) 2000 NIFTY Corporation All Rights Reserved.