分岐でも演算でも、 キャリーフラグの出番はもうほとんどない 0641デフォルトの名無しさん2019/12/01(日) 12:25:49.37ID:rpSiZ7Ms Intel® 64 and IA-32 ArchitecturesOptimization Reference Manual 64-ia-32-architectures-optimization-manual.pdf 248966-033June 2016 109ページ目3-12の3.4.2.2 Optimizing for Macro-fusionに書かれてるね リンクはNGワードで貼れなかったのでググッてね 0642デフォルトの名無しさん2019/12/01(日) 12:29:50.17ID:rpSiZ7Ms 最新のやつだと貼れるかな? https://software.intel.com/sites/default/files/managed/9e/bc/64-ia-32-architectures-optimization-manual.pdf 130ページ目3-12の3.4.2.2 Optimizing for Macro-fusionに書かれてるね 0643デフォルトの名無しさん2019/12/01(日) 13:38:02.71ID:N3Tb7oIA>>640 キミが有名なMIPS君かw 0644デフォルトの名無しさん2019/12/01(日) 13:45:41.30ID:npZTl1ra>>640 jcc命令の説明 77 cb JA rel8 D Valid Valid Jump short if above (CF=0 and ZF=0). 73 cb JAE rel8 D Valid Valid Jump short if above or equal (CF=0). キャリーフラグは使われてるぞ 0645デフォルトの名無しさん2019/12/01(日) 13:47:09.12ID:npZTl1ra ちょっと見難いね JA Jump short if above (CF=0 and ZF=0). JAE Jump short if above or equal (CF=0). 0646デフォルトの名無しさん2019/12/01(日) 14:13:26.95ID:rpSiZ7Ms>>644 >>642にマクロフィユージョンで内部的に1命令になるって書いてあるじゃん JA、JAEはTEST、AND、CMP、ADD、SUBがマクロフュージョン可能なようだね 0647デフォルトの名無しさん2019/12/01(日) 14:21:48.12ID:npZTl1ra>>646 間にフラグをいじらない他の命令挟むとフュージョン出来ないはずだし、 フュージョンした場合でも、フラグレジスタも一緒に更新するので、フラグを使うと考えていい 演算回路のキャリー信号を使わないということは、まず考えられないよ 0648デフォルトの名無しさん2019/12/01(日) 14:22:09.47ID:p3Z7Nr0h>>643 MIPS君が何者かしらんが おれはx86/ARM/MIPS全てを愛する男 SH/RL78/C6000/C2000/PIC/AVR/RX などなどいろいろと経験あり 0649デフォルトの名無しさん2019/12/01(日) 14:23:53.09ID:p3Z7Nr0h RISC-Vは開発経験ないです 0650デフォルトの名無しさん2019/12/01(日) 14:24:03.34ID:rpSiZ7Ms>>647 内部的に1命令のμOPsになるのに何言ってるの? 0651デフォルトの名無しさん2019/12/01(日) 14:31:19.10ID:rpSiZ7Ms CFとZFのみを使うやつはCMPでマクロフィユージョン可能のようだね 0652デフォルトの名無しさん2019/12/01(日) 14:33:05.42ID:npZTl1ra>>650 なんで噛みついて来るんだ? 間にmovが入ったりしてもフュージョンすると思ってる? こういう時は普通にフラグレジスタを参照するぞ 0653デフォルトの名無しさん2019/12/01(日) 14:40:26.09ID:npZTl1ra 確かマクロフュージョンって、実行キューに入るときには別々のμOPsに分解されたはず 整数パイプと分岐ユニット用にね 0654デフォルトの名無しさん2019/12/01(日) 15:01:21.03ID:rpSiZ7Ms>>653 また分割しちゃったらマクロフィユージョンで統合した意味なくないか?
>>646のExampleのところにこう書かれてるね Sandy Bridge microarchitecture enables more arithmetic and logic instructions to macro-fuse with conditional branches. In loops where the ALU ports are already congested, performing one of these macrofusions can relieve the pressure, as the macro-fused instruction consumes only port 5, instead of an ALU port plus port 5. 0655デフォルトの名無しさん2019/12/01(日) 15:30:27.00ID:npZTl1ra>>654 そういや、分解されるのはマイクロフュージョンの方だったか? ポート5でALUと分岐ユニットが一緒になってるから間違ってたかも、ゴメン でも、フュージョン出来ない書き方も可能なはずなので、フラグ参照するパターンもあるはずだよ 0656デフォルトの名無しさん2019/12/01(日) 22:01:05.21ID:N3Tb7oIA>>648 MIPSマシン、RISC-Vマシンなんて手に入らないからMIPSの話はMIPSスレでよくね? ここ初心者板だよ?