0

私は現在、人工衛星を軌道に送るプロジェクトで、アマチュア ロケット研究者のチーム (「アマチュア」とは一線を画しており、私たち全員が関連する大学の学位プログラムを修了、登録、または申請しています) と協力しています。これまで主に高レベルのプログラミング ( VB.NETPythonPHP ) を行ってきましたが、 FIG-FORTHにも少し手を出しました。キャリア宇宙船。

もちろん、ここでは速度とストレージの両方の効率が大きな問題になるため、頭に浮かんだのはアセンブリです。私の質問: これを行うこと、つまり Assembly で自動姿勢制御システムをプログラムすることは可能ですか?

このような非常に低レベルのプログラミング言語で行うのは非常に複雑に思えるので、この分野でより多くの経験を持つ人々がアセンブリが良い選択肢になるかどうか、またはまだ低レベルのものであるかどうかを検討できるかどうかを知りたかったのです。ただし、 FORTHFORTRAN、またはCのように処理するのが少し簡単になると、プログラムのサイズと速度の点で受けるペナルティと比較して、時間を大幅に節約できます。

4

1 に答える 1

5

過去に多くの組み込みシステムのプログラミングを行った者として、C でプロトタイプを作成することを強くお勧めします。そうすることで、インデックス作成モードの詳細に行き詰まることなく、アルゴリズム、制御フロー、およびエラー処理に集中できます。個々の命令の最適化。最も重要なことは、制御システムが実際に機能することです。

C でプロトタイピングを行うもう 1 つの利点は、最新の開発ツール (エディター、開発環境、デバッガーなど) を備えた Windows または Linux システムでプロトタイピングの大部分を実行できることです。これにより、ターンアラウンド タイムに大きな違いが生じます。

アルゴリズムが適切であることを証明したら、システムをプロファイリングして、占有するメモリの量と十分に高速かどうかを判断できます。組み込みシステム用の優れた C コンパイラは数多くあります。効率的なアルゴリズムを使用すれば、手作業でコーディングされたアセンブリ言語を掘り下げなくても、システムは十分に効率的である可能性が非常に高くなります。アルゴリズムを適切に選択すると、速度が桁違いに向上する可能性があることを忘れないでください。ほとんどの場合、手作業でコーディングされたアセンブリ言語では、(せいぜい) わずかな倍数のパフォーマンスしか得られません。多くの場合、改善は小さなパーセンテージ (10% 未満) です。

それを機能させます。次に、小さくて高速にします。

アセンブリ言語を学ぶ限り、すべてのプログラマーはそうすべきだと思います。どのプロセッサが実際には重要ではありません。最初のアセンブリ言語として x86 を学習するというコメントには同意しません。重要な教訓は、特定の命令セットまたはレジスタ構成とはほとんど関係ありません。最も重要なことは、より低いレベルで考えることを学ぶことです。つまり、ステートメントごとではなく、命令ごとに考えることです。個人的には、最初のアセンブリ言語が x86 だったプログラマを何十人も知っていますが、他のアセンブリ言語を学んだ人たちよりも、彼らのグループが優れているとは思いませんし、悪くもないと思います。x86 を学ぶメリットはたくさんあります。学ぶことができる人がたくさんいること、優れたチュートリアル情報がたくさんあること、無料の優れたアセンブラーがいくつかあること、さらにはエミュレーターや開発環境があることなどです。すべて無料で十分にサポートされています。これらの理由から、初めてのアセンブリ言語に他の言語を推奨するのは難しいでしょう。

于 2013-07-08T18:46:39.770 に答える