フォト
2025年4月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
無料ブログはココログ

« ATtiny13Aでシリアル通信(UART)を行う | トップページ | Windows 8.1でPerlを使う »

2014年11月13日 (木)

AVRのアセンブラプログラミングを勉強しています

最近ATtiny13Aが意外と使えそうと思い、本格的に使い込もうとAVRのアセンブラの
調査を始めました。

メインはC言語で、一部の関数は必要に応じてアセンブラで実装しようと思います。

アセンブラ プログラミングはZ80x86などで経験があります。

AVRの命令一覧を見て、「なんて、使いやすいのだろう!」が最初の感想です。

ますレジスタが32個と多く、レジスタで直接演算できるのが素晴らしい。
レジスタが多いと、PUSH、POPでいちいち退避する回数は減るし、
いちいち、演算専用レジスタを介して演算を行うなど不要です。

C言語用の関数を作成する場合、RAMの利用無しにほとんどの変数をレジスタに割り当てて
実装出来るのではないでしょうか。C言語との相性はかなり良さそうです。てかC言語用に
設計されています。

おさえどころは、他のアセンブラと同じで
・レジスタの種類
・レジスタへの値設定
・アドレシング
・演算命令
・演算結果(フラグレジスタ)による分岐
・I/O処理
・割り込み処理
ですかね。

ますは、
1)開発環境
2)C言語から呼び出す手続き(インタフェース)
3)デバック環境
をおさえなければなりませんが、1)、2)はだいたい分かりました。

手始めに、I2CのC言語関数をアセンブラに置き換えて見ようと思います。

« ATtiny13Aでシリアル通信(UART)を行う | トップページ | Windows 8.1でPerlを使う »

日記・コラム・つぶやき」カテゴリの記事

AVR」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: AVRのアセンブラプログラミングを勉強しています:

« ATtiny13Aでシリアル通信(UART)を行う | トップページ | Windows 8.1でPerlを使う »