PICでアセンブラのススメ
どうも皆さんこんにちは呉高専アドベントカレンダーの期限を守れない社会不適合者です。
もともとはC言語を学ぶための基礎の記事を書こうと思っていたのですが、
期限を過ぎてしまい時間がないので(ごめんなさい)、最近勉強しているPICのアセンブラで、
今まで行き詰まったことなどを解決策と一緒に共有しようと思います。
PICのアセンブラの言語を特定する。
さて、まずアセンブラを書くにあたって大事な知識として、
ご存じの方も多いとは思いますがアセンブラとは機械語を少し人にわかりやすくした言語のことです。
そして、特定の1つの言語のことではなく、アセンブラは多くの種類があります。
つまり、PICのアセンブラを学習するには、まずアセンブラの種類を特定する必要があります。
そこで、私の持ち前のGoogle力で検索してみたところMPASMとゆう言語を見つけました。
がしかし、MPLAB IDEで打ち込んでみて気が付きました。
コードに色がつかない!!
MPLAB IDEくんは優しいので、アセンブラでも命令語などには色がつくのですが、MPASMの命令語を打ってみても色がつかないのです。
そこで不審に思った私はネットサーフィンをすることに...
すると出てきました、なんとMPASMは過去の言語で最近の環境ではpic-asに移行していたのです。
とゆうことで、PICのアセンブラはpic-asとゆうことが特定できました。
気づき
しかし、ここまで調べて気づいてしまったのです。
C言語でプログラムを書いてアセンブリリストを出せばよかったと...
みなさんが勉強するときはぜひこの情報を糧にしてください。
本文はここいらで終わらせてもらいます。(中身が薄いのは許してくれ)
あとは、おまけを書いて終わりにしようと思います。
おまけ
アセンブラを書くにあたって役立つ小話何個かします。
Frame Pointer
PICって実はメモリ管理をすごく考えた設計をしているんですけど、
その設計はスタックメモリの管理にまで行き届いていて、
スタックメモリに対し、フレームポインタとゆう概念を適応しています。(少なくともdspicでは、他のpicはわからん)
簡単にゆうとスタックに対しスコープ分のメモリをLNK命令で確保して、
ULNKで開放するとゆう事ができ、これによりスタックの過剰な開放などによるメモリの事故がなくなります。
レジスタのなんやかんや
アセンブラを書くにはいくつかの内部レジスタを知る必要があるのですが、
公式からpdfで資料が出ているので参考にするといいと思います。
こうゆうのとか
今から勉強するなら
基礎知識がないとしんどいのでパソコンでまず勉強することをおすすめします。
NASMとかがオススメです。
使ったことがないのでなんとも言えないのですがMASMとかはだいぶ高水準寄りらしいです。