アセンブリのコード規約(主にPIC)はありますか?
6 に答える
興味のあるアセンブリ言語スタイルガイド(PDF)を見つけることができました。
アセンブリを作成する場合、すべての行にコメントすることは非常に役立ちます。
アセンブリでプログラミングするか、ACコンパイラを使用してアセンブリを作成するかによって異なります。パフォーマンスが重要な場合は、ACコンパイラを使用しないで、アセンブリを自分で作成してください。
ただし、一般的には、すべての行にコメントを付け、意味のあるポインタ名を持つ単純なサブルーチンを使用するのが慣例です。ブロックにコメントするものがあります。
start: movlw 0x24 // \
movf count // put 24 into count
MyCount: decfsz count //decrement count and exit if done
goto myCount //do the loop
goto exit //count is done exit
これは典型的なコーディングであり、コマンドのアドレスポインターの最初の列と、実際のプログラムの前にヘッダーセクションで変数を定義する関連変数ですが、これは使用しているアセンブラーに固有です。変数ポインタオプションがないものもあり、ダイレクトメモリロケーションを使用する必要があります。逆アセンブラから戻ってくるコメント付きのコードを見ると、次のようになります。
0020 movlw 0x24
0021 movf 0x25 // 0x25 = memory address of count
0022 decfsz 0x25
0023 goto 0x0022 // loop back to 0x22 until count = 0
0024 goto 0x01FF
次に、コメントアウトします。コードをグループ化するには、「nop」を使用して、コードを適切なラウンド数にオフセットします。たとえば、アドレスを20にして、2〜20のアドレスを割り込み用にクリアにします。チップにもよりますが、私は12f675用にたくさんのコードを書いているので、それが私が普段使っているモデルです。
また、コードを単純で明確なサブルーチンに保持します。アドレスは、最初のサブルーチンの間に10程度のブロックを残して、適切なラウンド数にする必要があります。後でいつでも戻ってコードを圧縮できます。常にコードにコメントを付けてください。十分にコメントすることはできません。
また、私は通常、実際のプログラム用に最大のスペースを残して、可能な限りメモリの最後にinitroutenを配置します。
それがいくつかの助けになることを願っています。
正式なものはないと思いますが、彼らのWebサイトでコーディングサンプルを読むと、通常のイディオムを味わうことができます。多くの異なる愛好家からの「貢献」がたくさんあり、それらはそれほど素晴らしいものではないかもしれないことに注意してください。
他のプロジェクトもチェックしてください。ほとんどのプロジェクトには醜いコードがあります。しかし、あなたは宝石を1つか2つ見つけるでしょう。
私はPICでプログラムを作成したことはありませんが、コードを読むのが好きでした。本当にすてきでクリーンな実行フローを備えた「リアルタイムOS」をぼんやりと覚えています。コーディングスタイルがどれほど一貫していたか覚えていませんが、私はそこから始めます。
それらのほとんどを読む方が良いです、そしてそれが散文のように簡単であるとき、あなたはあなたのスタイルを見つけるでしょう
私はJasonSと一緒です。「__asm」キーワードを使用して「.c」ファイルに数行のアセンブリ言語を埋め込むことになった場合でも、可能な限りCコンパイラを使用してください。
PICのアセンブラでプログラム全体を作成する必要がある場合、推奨される関数呼び出し規約は PIClist:PICPagingおよびPCLATHにあります。
使用しているPICのモデルによって異なります。たとえば、PIC16とPIC18には、Web上で簡単に見つけることができる多くのアセンブリ例があります。
ただし、PIC24やPIC32などのモデルはCを対象としています。これらは、特定のPICモデルのWebサイトにあるCのPICの例です。これらのPICモデルは、引き続きアセンブリでプログラムできますが、その方法に関するWebの例はごくわずかです。そのための最良のリソースは、MPLABの「ヘルプ」にあります。PICモデルが使用するアセンブラの「ヘルプの内容」を確認してください。これにより、いくつかの例と、PICアセンブリでプログラムし、メモリの定義やマクロの書き込みなどの単純なPICタスクを実行する方法について説明します。