MC68040ボードでも同じパラメータで実行してみました
MC68040は数値演算プロセッサMC68882のサブセットを内蔵しているので高速化が期待できます。
MC68040は数値演算プロセッサMC68882のサブセットを内蔵しているので高速化が期待できます。
コンパイラはgcc-m68kで-mc68040オプション設定で内蔵FPU命令をインラインで生成させますが
生成されるコードの質はすばらしいです。
前回と同じようにmandel_chk()のコンパイル結果はこんな感じで、ほとんどFPU命令だけで
出来上がっているのがわかります。
生成されるコードの質はすばらしいです。
前回と同じようにmandel_chk()のコンパイル結果はこんな感じで、ほとんどFPU命令だけで
出来上がっているのがわかります。
.file "man68040.c" gcc2_compiled.: __gnu_compiled_c: .text .even .globl mandel_chk mandel_chk: pea (%a6) move.l %sp,%a6 fmovm #0xfc,-(%sp) fdmove.d 8(%a6),%fp7 fdmove.d 16(%a6),%fp6 fmove.d #0r0.00000000000000000000e0,%fp2 fdmove.x %fp2,%fp4 moveq.l #1,%d1 fmove.d #0r4.00000000000000000000e0,%fp5 clr.l %d0 .L5: fdmove.x %fp4,%fp0 fdmul.x %fp4,%fp0 fdmove.x %fp2,%fp1 fdmul.x %fp2,%fp1 fdsub.x %fp1,%fp0 fdmove.x %fp0,%fp3 fdadd.x %fp7,%fp3 fdmove.x %fp4,%fp0 fdadd.x %fp4,%fp0 fdmul.x %fp2,%fp0 fdmove.x %fp0,%fp2 fdsub.x %fp6,%fp2 fdmove.x %fp3,%fp0 fdmul.x %fp3,%fp0 fdmove.x %fp2,%fp1 fdmul.x %fp2,%fp1 fdadd.x %fp1,%fp0 fcmp.x %fp5,%fp0 fbngt .L6 move.l %d1,%a0 tst.l %d1 jbge .L7 add.w #255,%a0 .L7: move.b %d1,%d0 jbra .L9 .L6: fdmove.x %fp3,%fp4 addq.l #1,%d1 cmp.l #8191,%d1 jble .L5 clr.l %d0 .L9: fmovm -72(%a6),#0x3f unlk %a6 rts
これまた久々に68040ボードを動かしたのですがGCCがWindowsXPのコマンドプロンプトで
正常動作しないことに今になって気づきました。
そのためホストマシンにWindows98のノートPCを持ってきてます。
正常動作しないことに今になって気づきました。
そのためホストマシンにWindows98のノートPCを持ってきてます。
実行中の様子
結果です。ボード上にRTCが載っているので結構正確。動作クロック32MHzで約17分です