1 名前:デフォルトの名無しさん [2007/08/14(火) 17:18:08 ] アセンブラ全般に関するスレッドです。 【前スレ】 アセンブラ… ( ゚д゚)ウッウー pc11.2ch.net/test/read.cgi/tech/1174825173/
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の関数をコールですね。わかります。
589 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:05:50 ] このスレを見ている人はこんなスレも見ています。(ver 0.20) フロントミッション総合 - FRONT MISSION - 105th [家ゲーSRPG] この会社辞めようと思った腐れ上司の一言0x21 [プログラマー]
590 名前:デフォルトの名無しさん [2008/05/29(木) 16:29:58 ] すいません。アセンブラの宿題が終わらなくて。。。 どうか、手伝ってください。。。 Define a character string named CO_NAME containing "Internet Service" as a content. コレ分かる方います? あ〜!わかんね〜!
591 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 18:33:02 ] 自己解決しました
592 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 22:49:58 ] >>589 涙出てきた
593 名前:デフォルトの名無しさん [2008/06/03(火) 00:55:58 ] アセンブラでポインタってできるんですか? 変数の値の番地のプログラムに飛びたいんですが
594 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 03:45:37 ] どの石よ?
595 名前:デフォルトの名無しさん [2008/06/03(火) 05:16:21 ] PICです
596 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 06:28:13 ] >>595 間接アドレシングで出来るから、手元にあるデータシートに記載されてる説明を確認の事。 手元になければ↓からダウンロードして欲しい。 ttp://www.microchip.co.jp/document.htm
597 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:11:35 ] すごいですありがとうございます!
598 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 13:41:56 ] 【算術演算結果による分岐】 N 番地の内容から M 番地の内容を引き,答えが負なら P 番地に -1(#FFFF)を,正なら +1(#0001)を格納するプログラムを作成しなさい.
599 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 13:46:02 ] >>598 だが断る
600 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 15:58:03 ] >>598 問題文が糞だから書き直せ屑
601 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 18:58:36 ] >>598 #define V(X) *(short *)(X) r = V(N) - V(M), r < 0? V(P) = -1 : r > 0? V(P) = 1 : 0;
602 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:40:05 ] 答えが 0 の時は、格納しちゃダメなんじゃないのか?
603 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 01:20:57 ] そーゆー問題のときは"0"=正で考えていいんでないかい。 特別扱いする必要があったらそういう注意書きがあると思う。
604 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 02:52:33 ] >>598 CLRX INCX LDD M CPD N SBEX #0 CPD N SBEX #0
605 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 02:55:52 ] STX P
606 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 07:25:19 ] >>598 ;うろおぼえ68000 START: MOVE.W SR, -(SP) MOVEM.L D0-D1, -(SP) MOVEQ #1,D1 MOVE.W N(PC),D0 CMP.W M(PC),D0 ;SUB.W M(PC),D0 BPL L_PLUS(PC) NEG.W D1 L_PLUS: MOVE.W D1,P(PC) MOVEM.L (SP)+, D0-D1 MOVE.W (SP)+, SR RTS N: DC.W $FF00 M: DC.W $00FF P: DS.W 1
607 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 10:50:12 ] しれっと特権命令使ってんじゃネーヨw
608 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:31:03 ] ああ、そうか。 MOVE.W (SP)+, SR RTS じゃなくて RTR で、いいんだ。
609 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:17:04 ] >>603 > そーゆー問題のときは"0"=正で考えていいんでないかい。 > 特別扱いする必要があったらそういう注意書きがあると思う。 そう言う思い込みはバグの元になるぞ。
610 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:21:17 ] 68000だけはmove SRが一般命令だったり。 010になって特権命令になったが。 ところで、PC相対ってオペランドの右に使えたっけ? なんか制限あったような気がするんだが。
611 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:52:58 ] >>610 > 68000だけは 68008 のこともたまには思い出してください。 > move SRが一般命令だったり。 move from SR の方だけね、move to SR は 68000 でも特権命令。 > ところで、PC相対ってオペランドの右に使えたっけ? て言うか、CMP 命令は右にしか使えない。 Add/Sub なんかはどっちにでも使える (但し、反対側は Dn のみ) けど、CMP はその後の条件判定を反対にすればいいので、片方しか 必要ないと判断したんだろうな。
612 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 12:25:06 ] ;青い本みてやりなおした68000 START: MOVE.W SR, -(SP) MOVEM.L D0-D1/A0, -(SP) MOVEQ #1,D1 MOVE.W N(PC),D0 CMP.W M(PC),D0 BPL L_PLUS(PC) NEG.W D1 L_PLUS: LEA P(PC), A0 MOVE.W D1, (A0) MOVEM.L (SP)+, D0-D1/A0 RTR dstにd16(PC)使えるの4命令しかなかた
613 名前:607 mailto:sage [2008/06/08(日) 15:33:43 ] * ステップ数を詰めてみた。 MOV.W N,D0 CMP.W M,D0 SMI D0 *(00/FF) EXT.W D0 *(0000/FFFF) ORI.W #1,D0 *(0001/FFFF) MOV.W D0,P * もっと変則にしてみたがステップ数縮まらず。 MOV.W N,D0 CMP.W M,D0 SPL D0 *(FF/00) EXT.W D0 *(FFFF/0000) ASL.W #1,D0 *(FFFE/0000) NOT.W D0 *(0001/FFFF) MOV.W D0,P * Scc を用いない方法。 MOV.W N,D0 SUB.W M,D0 ASR.W #8,D0 (00??/FF??) ASR.W #8,D0 (0000/FFFF) ORI.W #1,D0 (0001/FFFF) MOV.W D0,P * そして分岐を使っていないことに気が付く。
614 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:27:20 ] 素直な人間の思考から外れるものはコメント無いと泣けるので勘弁してください。
615 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:32:57 ] >>613 (PC)を使ったらもっと縮まるんじゃない?