1 名前:デフォルトの名無しさん [2007/08/14(火) 17:18:08 ] アセンブラ全般に関するスレッドです。 【前スレ】 アセンブラ… ( ゚д゚)ウッウー pc11.2ch.net/test/read.cgi/tech/1174825173/
488 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/18(日) 09:18:31 ] >>486 ←自己弁護見苦しい。理論もクソも無いじゃないか
489 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 09:22:52 ] >>467 からレジスタリネーミングを知らないなんて飛躍するのが理論なの?
490 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/18(日) 09:57:13 ] x86って何の気も無しにコード組んでればレジスタリネーミングのヒントを与えてるんだよ 値のロードやxor eax, eaxなど第1オペランドで指定するレジスタの元の値に非依存の結果が得られる命令のほとんどがそうだ。 第2オペランド以降が依存関係がないか解決できてるのも条件だけど。 >>466 が的外れなのも言うまでもないし、SPARCみたいな古くからあるレジスタ大量に積んだ RISCがOoOを実装してないのはご周知の通り。 そもそもOoOみたいな複雑な機構自体がRISCと矛盾する。 ところで「重要なところ」って何なのかな。 無知故の発言にしかみえないが。 命令列レベルで並列なんて考えない方が良いんだよ。 x86の少ないレジスタで命令レベル並列なんて根本的に無理だし、 結局ロード・ストアを連発する羽目になりRAWハザードで性能でないのが落ち。
491 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/18(日) 10:00:20 ] おっと最近のSPARC64はOoO実装してるね。無茶なのに。
492 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 10:23:19 ] クソコテは放置推奨
493 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/18(日) 10:44:41 ] (ISAレベルで)レジスタが多いと、インオーダでもちゃんと組んでやれば性能は出せるけど ユニット構成が変わったりパイプラインが深くなったりすると総崩れを起こすんだよね。 レジスタが多いが故にOoOで依存関係を解決してやるのも回路が膨大になる。 OoO時代になって、回路規模あたりの効率はレジスタの多いPOWERみたいなアーキよりもx86のほうがむしろ勝ってたりね。 ジョブズがG4/G5よりCoreのほうが性能が良いって掌を返したのも無理もない話なんだよ。 あと様々なプラットフォームに移植されてるJavaVMはスタックマシン。 スタック階層が依存関係のヒントにもなるから動的最適化もしやすいんだよ。 今やx86もVMみたいなもんだからな。JavaVMほどには洗練されてないが、ソフト資産の面で優れてる。 命令セット使い捨てのアーキには優れたアーキなんだけどねRISCみたいなのは。 CellのSPEなんかも使い捨てだろう。 PS2のときもワークステーションを作るだとかふかしてたが結局EE(ベクトルコプロセッサ付きカスタムMIPS)は使い捨てられた。
494 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 11:04:59 ] >>492 もうちょっとやりあっちゃ駄目? あーでも納得させる自身は無いなあ。 誰も奴の知識に文句をつけてる訳じゃなくて 知識に自分の思想/宗教を付加してる事が教育的ではないと思うんだが。 > x86の少ないレジスタで命令レベル並列なんて根本的に無理だし、 そんなの思想だ。俺は無理だと思っているが、無理かどうかは分からない。 お前は今まで反対に命令レベルの並列を説いて「少ないレジスタで並列なんて無理だろう」って言われてたよな。 > CellのSPEなんかも使い捨てだろう。 単なるお前の予想だし蛇足だろう。そもそもLarabeeマンセーはどこいきましたか(笑)
495 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/18(日) 12:22:18 ] インオーダのベクトル指向プロセッサはデータレベル並列性が高い処理にしか有効でないよ。 1スレッドあたりの性能が重要な用途ではOoOのスーパースケーラが引き続き有効。 バランスが大事だな。 Larrabeeは既存のx86アーキの代替ではない。 置き換わるなんて言ってるのは後藤くらいだ。
496 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:08:06 ] で、それは「アセンブラ」の話題なのか?
497 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:47:28 ] そりゃそうだろう
498 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:14:06 ] CPUの話題ではないのか、ってこと?
499 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:24:40 ] 壊れたラジオだから 期待するだけ無駄 スレに住みつかれたら 無視するしかないだろ
500 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 15:01:24 ] CPU の話題を出さずにアセンブラの話をするのは無理というものだ
501 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 15:20:58 ] 団子じゃなけりゃ文句も出ないんじゃね?
502 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:59:14 ] CPUの話題なら何でもいいってわけじゃないし。
503 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 20:10:04 ] 団子が名前欄に何も入れなければ済む話だと思う
504 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 21:21:20 ] 入れて欲しすぎる。NG設定が面倒。
505 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/18(日) 21:41:53 ] まあなんでもいいんだけど。 「重要なこと」があると言いつつ自分は例示せずに俺に噛みついてれば彼の脳内では「理論的」なんだから たまったもんじゃないよな。 まあレジスタリネームの存在を前提としないトンデモ仮説なら何言っても否定してやるけどさ。
506 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 22:59:52 ] はいはい壊れたラジオ
507 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/18(日) 23:26:51 ] 耳の痛い話に壊れたラジオって言っておけば「理論的」なんだね
508 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 23:55:06 ] コテハンvs名無し ですか
509 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 23:59:19 ] 団子さんへの嫉妬でスレが埋まりつつあるな
510 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 00:44:52 ] >>505 >まあレジスタリネームの存在を前提としないトンデモ仮説なら何言っても否定してやるけどさ。 ご遠慮ください。
511 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:50:44 ] アセンブリ言語の教科書に org 100H section .text start: mov ax, 0200H mov bx, HELLO PRINT: mov dl, [ds:bx] cmp dl, 00H jz PRINTEND int 21H inc bx jmp PRINT PRINTEND: mov ah, 4CH int 21H section .data HELLO db 'Hello World!',00H というプログラムがあるのですが、 文字列のアドレスを入れるのはbxレジスタでなければいけないんでしょうか? 例えば、 mov bx, HELLO mov dl, [ds:bx] inc bx の部分を mov cx, HELLO mov dl, [ds:cx] inc cx に変更したら動かないのですが、何が問題なのかよくわかりません。
512 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:04:00 ] int 21H というファンクションの仕様。 cなどでいう関数の引数。
513 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:42:22 ] [ds:cx]と表現するようなアドレッシングモードは存在しないから
514 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 13:54:30 ] ;ファイル作成 org 100H section .text start: mov ah, 3CH mov dx, filename xor cx, cx int 21H mov ah, 4CH int 21H section .data FILENAME db 'test.txt', 00H とした時にtest.txtではなくTEST.TXTが作成されてしまうのですが。 test.txtを作成する時はどうすればいいのでしょうか?
515 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 14:11:58 ] LFN (Long File Name) ファンクションを使うんだ。 www.vector.co.jp/soft/data/prog/se044198.html
516 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:49:21 ] >>514 大文字、小文字なんか気にするな。 気になるなら set DIRCMD=/L とすれば気にならなくなるよ。 君の使ってる OS で使えるかどうかは知らんが。
517 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 00:05:32 ] >>515 Windows 2000/XP でも有効ですか?
518 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 00:10:54 ] なんかアセンブラと関係ない気がする
519 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 07:43:35 ] >>517 有効です。
520 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 12:01:00 ] 今度はキャメルケースが全部小文字になる方が気になるw
521 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 12:27:59 ] 大文字、小文字を意識するネーミングは、たいていの場合においてよくないことだと思うぞ。 MontaVista Linux のソースなんか大文字、小文字違いで同じ名前のファイルが あちこちにあるんで、Windows 上に持ってきて作業できない。 おかげで vi がそこそこ使えるようになっちまったよ。(w
522 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:51:11 ] >>521 Windowsでも大文字小文字を区別できなかったっけ? レジストリの設定にそんなのがあった気がする
523 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:36:27 ] Win32サブシステムがDOSとの互換性のために区別してないだけで カーネルやファイルシステムレベルじゃ区別されてるな
524 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:39:23 ] Win32サブシステムでも区別する設定はあるけど 区別しない前提で作ってるアプリばっかりだから きっとまともに動かないんじゃないだろうか
525 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:48:11 ] Aとaは区別されない えーっ
526 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/22(木) 21:55:19 ] 大小違い同名ファイルが作れるかどうかは別だよな
527 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:56:18 ] NTカーネル(つかNTFS)で 全角アルファベットが酷い扱いだった時代があったことを知らないのかね。
528 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:57:55 ] うわ知ったか消防が来た
529 名前:デフォルトの名無しさん [2008/05/22(木) 22:03:40 ] 晒しage
530 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 07:52:14 ] ケースの話してるのに、なぜ「全角」が出てくるのか、まずはそこからだ。
531 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 09:21:35 ] だんごさんのせいでオヤジギャグがスルーされたな。
532 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 09:40:54 ] >>530 全角Aとaのcaseが区別されない、と言うことを525が言ってるからだろ
533 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 11:37:28 ] そういうケースもあるさ
534 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 02:48:18 ] 団子とやりあってたヤシだがしばらく書き込めなかった。 予想通り俺の説得スキルが足りないようなのでもうやめる。 続けたければ隔離スレでも立ててくれ。
535 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 04:26:55 ] SBB AL,[EAX] ADD [EAX],AL XCHG [EAX],EAX ADD [EAX],AL あるゲームのHPの格納アドレスの近くにあるのですが これってどういう意味があるのでしょうか
536 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 07:53:07 ] ただのデータじゃね?
537 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/24(土) 08:27:58 ] >>534 お前が無知なだけだろ。モダンなx86の物理レジスタは100本以上あるんだよ。
538 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/24(土) 08:41:39 ] 俺を説得とか馬鹿にもほどがある。 釈迦に説法と言う気はないが、俺に無意味に噛みついて質問者を混乱させてどうするんだ。 「重要なこと」さっさと答えろよ
539 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 09:20:27 ] >>538 無意味に噛みつていたのはおまえだろ
540 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/24(土) 09:24:41 ] 「重要なこと」があると言いつつ、それを言わないこと自体が論理矛盾じゃないか。 俺は「無い」と断言したがな
541 名前:デフォルトの名無しさん [2008/05/24(土) 09:30:04 ] ここで聞くことかどうかわかりませんが、電子手帳とかそういうのもマイコン 使ってますよね。そういうのに入っているデータもアセンブラがわかれば 吸い出せるんですか。昔のやつが何台もあるので。
542 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/24(土) 09:31:44 ] データそのものは機械語で保存されてるわけではない。どっちかというと構造体が解析できればOK。
543 名前:デフォルトの名無しさん [2008/05/24(土) 09:32:50 ] >>542 もう少しヒントを教えてくれるとありがいです。または参考となるURLなど あれば。お願いいたします。
544 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 09:41:39 ] せめて機種を書け。
545 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 09:47:18 ] www.wotsit.org/ くらいは読みこなせるようになって、 日本語漢字コードのあれこれを理解できたら 独自解析も夢ではないと思うよ
546 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 10:41:11 ] 団子さんのカキコでスレが猛烈にヒートアップしたな
547 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 11:20:44 ] >>546 あんたよく飽きないねぇ
548 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/24(土) 11:30:52 ] レス番飛んでる
549 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:19:25 ] お宝鑑定団子供大会
550 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/24(土) 15:34:56 ] 「さんの(レス|カキコ)」
551 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:33:19 ] みんなが 団子さんのカキコでスレが云々 とか書いておけば団子ハブにできるのか。いいな。
552 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:19:49 ] 団子さん兄弟
553 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:35:16 ] もうこの板の名無しを「団子さん」にすりゃいいんじゃね?
554 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 08:54:41 ] そもそも彼奴が名無しで書き込めば解決なのだから 今後もハンドル付きで書き込むようなら 内容にかかわらず荒らし扱いで問題ないよな
555 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 11:32:52 ] .text:0040135A loc_40135A: ; CODE XREF: sub_401350+28j .text:0040135A cmp [ebp+arg_4], 0 .text:0040135E jz short loc_40137A .text:00401360 mov ecx, [ebp+var_4] .text:00401363 mov byte ptr [ecx], 0 .text:00401366 mov edx, [ebp+var_4] .text:00401369 add edx, 1 .text:0040136C mov [ebp+var_4], edx .text:0040136F mov eax, [ebp+arg_4] .text:00401372 sub eax, 1 .text:00401375 mov [ebp+arg_4], eax .text:00401378 jmp short loc_40135A .text:0040137A loc_40137A: ループで文字列の比較をしてるんでしょうか? インクリメントしてる方の処理が何をしているのか。
556 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 11:59:34 ] // >>555 for (; arg > 0; ++var, --arg) { * var = 0; } // ただの配列のクリアだね。随分と無駄なコードだけれど。
557 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 12:09:37 ] >>556 ありがとうございます。
558 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:48:45 ] x86やAMD64向けの、NUL文字の位置を最速で求めるコードって何ですか?
559 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:57:03 ] ダンゴ様のピリっとしたベンチマークが求められているな
560 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 16:31:16 ] ダンゴちゃんの愛されっぷりがわかるスレだな
561 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 17:17:41 ] みんなツンデレすぎ
562 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/25(日) 19:18:01 ] 長い文字列なら16byteごとに一気に判定してしまうのが吉 lea edx, [str] pxor xmm0, xmm0 loop1: movdqu xmm1, [edx] pcmpeqb xmm1, xmm0 pmovmskb ecx, xmm1 test ecx,ecx jnz skip1 add edx, 16 jmp loop1 skip1: bsf eax, ecx add eax, edx ; eaxに結果格納 SSE4.1対応ならpcmpeqb+ptestでNULLが含まれる16バイトを検出可能。 SSE4.2に対応してればATAを使えばNULL文字の位置まで特定できる。 まあレイテンシ隠蔽とかの最適化は各自でやれ
563 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 19:25:54 ] SSSE3だのSSE4.1、4.2だの… 最近わけわかめ
564 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 22:33:37 ] そんなことよりMIPSやろうぜ。
565 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 23:35:56 ] Intel 64 and IA-32 Architectures Software Developer’s Manual の日本語版ない?
566 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/25(日) 23:41:06 ] www.intel.com/jp/download/index.htm 日本法人は変なFlashゲーム以外仕事しねーな
567 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 00:43:04 ] >>562 すげー倍以上速くなった。
568 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 09:14:22 ] >>567 想像で勝手な事言うが、メモリがボトルネックで流石に倍は無いだろう。 そら自力で1byteずつ調べてたらxmm使った場合の16倍の調査が必要になって メモリアクセスに隠蔽されないくらい遅くなるかも知れないが strlen使ったら普通4byteずつ調べてくれるから比較とかの時間はメモリアクセスの時間に隠蔽されるはず。 よく話題に上がる高速版memcpyを考えるのと同じで ハードウェアプリフェッチを邪魔しない程度にプリフェッチの方法を考えた方がスピード上がるはず。
569 名前:デフォルトの名無しさん [2008/05/26(月) 12:09:40 ] Windows上で動くCASL2のアセンブラを探しているんですが、何かありませんか? ソースプログラムと実行結果をテキストで出力可能なら良いのですが。
570 名前:デフォルトの名無しさん [2008/05/26(月) 12:27:03 ] >>569 いくらでもあんじゃない? ttp://www.vector.co.jp/vpack/filearea/win/prog/casl/
571 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/26(月) 12:30:32 ] stlrenで4バイト同時って可能なの? dword単位で0が含まれるバイトを検索する命令なんてないと思うんだが。 基本的に巡回操作の場合は明示的な prefetch* 命令は使う必要ない。 文字列が全部キャッシュに載ってるなら尚更だし。 むしろmovdquの方に突っ込み入るかと思ったが(16byte境界からの探索にしてmovdqaしたほうがいいかも) >>569 ここは良いGoogle検索代行スレですね。 www.vector.co.jp/vpack/filearea/win/prog/casl/
572 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/26(月) 12:35:07 ] ああ、MSVCRTのstlren.asm見たらようやく理解できた。 1バイト毎にbranch命令じゃ確かにパイプラインハザードで性能でない罠。
573 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/26(月) 22:35:00 ] まあ、俺は性能どころかまともに動くかすら全然確かめてなかったんで とりあえず実験してみましたよ。 smallcode.weblogs.us/2006/08/22/fast-strlen-function/ のソース一式を改造して俺仕様stlrenベンチを作成。 NULL文字検出方法自体は>>562 をベースに小改良をしたものね。 で、それぞれ一番最後のスコアだけ抽出 strlen - short strings Microsoft: 1625 ticks, a = 145 Peter: 1093 ticks, a = 145 A.Fog: 1273 ticks, a = 145 DQN(SSE2): 674 ticks, a = 145←ここ strlen - long string Microsoft: 1225 ticks, a = 926 Peter: 1225 ticks, a = 926 A.Fog: 874 ticks, a = 926 DQN(SSE2): 437 ticks, a = 926←ここ とまあ、MSVCRT版strlenの倍以上は余裕で速い。 もっとも、pmovmskbの性能によって前後するみたいだが(Pen4とかAMDのプロセッサなんかだと全力で遅いかも) ちなみにうちの環境はCore 2 Duo (Wolfdale) 3.17GHz, Windows Vista Ultimate x64 Editionその他諸々ね 改造ソースとバイナリ一式→download.kousaku.in/trip/fast_strlen_mod.zip ちなみにSSE4.1(ptestを使う方法)だとSSE2と比べても伸びなかった。
574 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:11:38 ] OoOやら予測分岐やらでかい口叩いてもCPUがメモリに負けてるってことか。 てかMacBook Pro (Merom)でWinXP(32bit) on VirtualPCだとDQNおせぇ。 VMWareにデュアルコア割り当てちゃってるけどバッテリ駆動じゃねえのになあ。 (VMWareは片コアだけにした方が速いと言われている) strlen - short strings Microsoft: 6024 ticks, a = 145 Peter: 6708 ticks, a = 145 A.Fog: 6036 ticks, a = 145 DQN(SSE2): 12792 ticks, a = 145 strlen - long string Microsoft: 6612 ticks, a = 926 Peter: 6792 ticks, a = 926 A.Fog: 4716 ticks, a = 926 DQN(SSE2): 12936 ticks, a = 926 イレギュラーな使い方だが、何故遅くなるのかは興味あるな。
575 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/26(月) 23:22:02 ] ああ、うちのMerom機(T5500 Vista Home Premium (32bit))でも遅くなる。 【実行結果】 www.vipper.org/vip829067.txt.html pass [1234] ちなみに答えはわかってる。 Merom/ConroeはShuffle Engineの実装がしょぼくて pmovmskb reg, xmmがアホみたいに遅い。 MMXでやったほうがかえって速いかも知れない。
576 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/26(月) 23:48:49 ] あれ?まともだ。 コンソール出力をリダイレクトすると何故かまともな結果が出るらしい。 そして、Meromでもシャッフルは思ったよりネックじゃない。 原因が別のところにありそう。 MMX(+SSE1 64bit整数SIMD)版追加版 download.kousaku.in/trip/fast_strlen_mod2.zip Merom機で追試 www.vipper.org/vip829134.txt.html PASS: [1234]
577 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 01:33:24 ] 576をWindows Vista 32bit + T5600 (Merom) で実行したけど、ほぼ同じ結果なのだが、 short stringsのDQN(MMX)が a = 145 だった。 あとMMXとSSE2に限り、1/20くらいの割合で平均の3倍以上かかる時があった。 大体649ticksや660ticks前後なのに、突然1738ticksになったり。 でもMMX/SSE2はMSVCRTの倍を超えている。 L2キャッシュがあふれるほど長い文字列なら話は別だろうけど。
578 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 01:40:51 ] レジスタ退避コスト?
579 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 02:07:18 ] 参考までにログをうp。fast_strlen > result.logとして出力。 パスは1234。Core 2 Duo T5600 Merom Vista HomePremium SP1 32bit www.dotup.org/uploda/www.dotup.org4863.txt.html + VirtualPC XP Pro SP2 32bit www.dotup.org/uploda/www.dotup.org4864.txt.html
580 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/27(火) 02:17:30 ] >>576 の追試結果のテキストファイルはミスで、MMXのはShortのほうでLongを実行しちゃってるオチ。 今上げてるEXEとソースは修正済み。 PenM(Banias)でも計ってみたんだけど僅差でSSE2>MMXになってる。 並列度の低いコードではベクトル長の引き伸ばしはある程度有効ということがわかる。 >>578 あーそれもありそうだな。 Windowsってコンソールへの描画すらなにげに重たいようだ。 (ファイルだと軽いと思われる) 何周か回して平均値で算出したほうがよさそうかも。
581 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 07:42:01 ] こんなタイトなループで並列度が低いとか
582 名前:デフォルトの名無しさん [2008/05/27(火) 09:53:49 ] >>570 ありがとうございます
583 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 10:00:07 ] いまどきアセンブラよりJavaのほうが速い。 JNI使えばハードの機能もフルアクセスだし。
584 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 10:18:41 ] つ、釣られるもんか!
585 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 11:20:27 ] >>583 開発速度のことですね、わかります。
586 名前:デフォルトの名無しさん [2008/05/27(火) 11:41:02 ] Core2Quad Q9450でPS2エミュをやると、実機と違い処理オチせず、激ムズになることが判明 namidame.2ch.net/test/read.cgi/news/1211740649/l50
587 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:09:50 ] >>583 wwwwwwwwwwwwwwwwwwwwwww
588 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/27(火) 20:31:16 ] JNIでfast_strlen.cppの関数をコールですね。わかります。