現在CS+でRX63Nでソフトを作成しております
なにぶんRAMが128K Byteのようで、これをまだまだ先になりそうですが
SDカードやLANやUSBからファームを転送してRAM上で動作させるといいんじゃないかと
その場合ROMは大容量なのでC言語ライブラリーモージュルだけをROMにもたせることができれば
いいのじゃないかと素人考えで、そんなことは可能なんでしょうか?
fujitaさんの調査結果はとても興味深いですね。
RX631なら内蔵RAM/ROMのアクセス時間は同じなのでどちらで実行しても変わらないと思ってましたが、RAMの方が遅くなるんですね。
これはCPUの命令・オペランドバスがRAMのアクセス権を取り合うためだと考えられます。
fujitaさんの2件目のテストプログラムではオペランドのアクセスが無いので、実行時間に差が出ないのでしょう。
この辺りの動作については、ハードウェアマニュアルの16.2.1 CPUバスに説明があります。
アクセス先が異なれば同時動作出来るのでプログラムがROMに、データがRAMにあるケースなら同時アクセスで速くなるという事ですね。
キャッシュの存在を考察されていますが、RXには一般的なキャッシュは無いので影響はないですね。
また、命令キューはCPUコアの中にあるのでプログラムがROM・RAMのどこにあっても命令は同じように先読みされます。
> それでROM出力にアドレスの一覧を出力するために、次の命令があります。関数の数だけ有ります。> 自分の好きな順番に並べられます。>> .LWORD _isalnum ;
使いたい関数の数だけ BRA.A 命令並べた方が良くないですか?