私は数バイトの空き RAM を持つ独自のシーケンサーに取り組んでいます。静的に割り当てられた数百バイト。PC を含む 8 つのレジスタ。インダイレクションなし (C では「ポインター」)。スタックなし。
MOV
指示はありません: に移動M
するには、依存関係の解決、または少なくとも最適化を非常に複雑にするようにK
記述する必要があります。CLX A; ORX M; STX K
多くの操作は特定のレジスタでのみ機能します。たとえば、32 ビットの右シフトK
では上位ワードとM
下位ワードが使用されます。
私にとっては、組み込みアプリケーションに C を選択するのは明らかです。ポインターや関数呼び出しが不可能なためです。ほとんどの高水準プログラミング言語には算術式があるため、これは選択肢を絞り込むのに役立ちません。
何よりも重要なのは絶対的な最小コード サイズであるため、最適化が重要です。
XOR
私の好みは、Lisp 式をマクロ アセンブラの形式としてコンパイルすることです。プログラマは、命令を書くなど、自分自身の高レベルの操作を最適化できるからです。
この種の制限があるプロジェクトはこれが初めてではないと確信しています。これは過去にどのように解決されましたか?