bignum を実装することになっている緊急のプロジェクトがあります。私は IA-32 での作業経験しかありません。基本的なアドバイスは役に立ちます。
3 に答える
アーキテクチャを学習するためのハードウェアがない場合は、おそらくSPIMが役立ちます。
C
またはで記述しC++
、コンパイラを使用してアセンブリ コードを生成します。修正すべき点を探すことができます (それが優れたコンパイラでない場合)。その過程で、アセンブリ言語の仕組みや CPU の機能などを学ぶことができます。
まず、しないでください。代わりに、 GMPなどの既存のライブラリを使用してください。ウィキペディアは、さまざまなライセンスを持つそのようなライブラリの全リストを参照しています。パブリック ドメインで公開されているものもあります。
ここで、何らかの理由で既存のライブラリを使用することを許容できないとします。次に、私のアドバイスは、C で行うことです。MIPS32 は、コンパイルを効率的にするように設計された RISC に似たアーキテクチャです。C コンパイラは完全ではないため、手動でアセンブリを行うことである程度のパフォーマンス向上を達成できますが、大きな向上にはなりません (経験則として、最適化された C と比較して、最適化されたアセンブリでは +30% の速度が期待できます。また、非常に大規模な開発が必要になります)。コストも)。
そうは言っても、MIPS32 で何ができるかを知りたいと思うかもしれません。そうすれば、C ソース コードをより最適化し、コンパイラが生成するものを調べて、それが正しいかどうかを判断できます。このページからダウンロードできる "MIPS32® Architecture for Programmers" は良いソースです。ボリューム I と II をご覧になることをお勧めします。