フォト
2017年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」カテゴリの記事

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

コメント

コメントを書く

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

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/571408/60646855

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

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