AVRのアセンブラプログラミングを勉強しています
最近ATtiny13Aが意外と使えそうと思い、本格的に使い込もうとAVRのアセンブラの
調査を始めました。
メインはC言語で、一部の関数は必要に応じてアセンブラで実装しようと思います。
アセンブラ プログラミングはZ80、x86などで経験があります。
AVRの命令一覧を見て、「なんて、使いやすいのだろう!」が最初の感想です。
ますレジスタが32個と多く、レジスタで直接演算できるのが素晴らしい。
レジスタが多いと、PUSH、POPでいちいち退避する回数は減るし、
いちいち、演算専用レジスタを介して演算を行うなど不要です。
C言語用の関数を作成する場合、RAMの利用無しにほとんどの変数をレジスタに割り当てて
実装出来るのではないでしょうか。C言語との相性はかなり良さそうです。てかC言語用に
設計されています。
おさえどころは、他のアセンブラと同じで
・レジスタの種類
・レジスタへの値設定
・アドレシング
ますレジスタが32個と多く、レジスタで直接演算できるのが素晴らしい。
レジスタが多いと、PUSH、POPでいちいち退避する回数は減るし、
いちいち、演算専用レジスタを介して演算を行うなど不要です。
C言語用の関数を作成する場合、RAMの利用無しにほとんどの変数をレジスタに割り当てて
実装出来るのではないでしょうか。C言語との相性はかなり良さそうです。てかC言語用に
設計されています。
おさえどころは、他のアセンブラと同じで
・レジスタの種類
・レジスタへの値設定
・アドレシング
・演算命令
・演算結果(フラグレジスタ)による分岐
・I/O処理
・割り込み処理
ですかね。
ますは、
1)開発環境
2)C言語から呼び出す手続き(インタフェース)
3)デバック環境
をおさえなければなりませんが、1)、2)はだいたい分かりました。
手始めに、I2CのC言語関数をアセンブラに置き換えて見ようと思います。
・演算結果(フラグレジスタ)による分岐
・I/O処理
・割り込み処理
ですかね。
ますは、
1)開発環境
2)C言語から呼び出す手続き(インタフェース)
3)デバック環境
をおさえなければなりませんが、1)、2)はだいたい分かりました。
手始めに、I2CのC言語関数をアセンブラに置き換えて見ようと思います。
« ATtiny13Aでシリアル通信(UART)を行う | トップページ | Windows 8.1でPerlを使う »
「日記・コラム・つぶやき」カテゴリの記事
- gitでサブモジュールを作成する(2025.02.01)
- 焼き芋ちゃんカレンダー、ポチリました(*´ω`*)(2025.01.31)
- Windows環境不要かも..(2025.01.20)
- 不明なアクセス集中ページを非公開にしました(2025.01.15)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
「AVR」カテゴリの記事
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
- Arduino用SJIS漢字フォントライブラリ SDカード版を作成しました(2018.10.30)
- ATtiny13AでI2C接続キャラクタLCDを利用する(4)(2018.04.16)
- ATtiny13Aで赤外線リモコン受信センサーを使う(2)(2018.04.15)
- ATtiny13AでHC-SR04を使った距離計測(2018.04.14)
« ATtiny13Aでシリアル通信(UART)を行う | トップページ | Windows 8.1でPerlを使う »
コメント