OSECPU-ASKA入門 #0006
(0) はじめに
- 以下の記事はver.0.54のWindows版を前提にしています。他の版を使っている場合は適宜読み替えてください。
- たとえば osecpu054d.zip とかのことです
(1) rand
- junkApi_rand(_i, max); :
- 適当な乱数を返します。OSECPUでは起動時にシステムが適当な方法でseedを与えてくれるので、毎回異なった乱数系列を期待することができます。
- もちろんseedをアプリで指定し、系列を選択することもできます。
- このAPIによって 0 <= i <= max の乱数が返ります。
- maxが0のときは、iの値はSInt32の任意の値を取ることになります。
(2) putString2
- junkApi_putString2(len, s); :
- junkApi_putConstStringは文字定数のみが指定可能でしたが、これはT_UINT8な配列を指定可能なものです。
- 末尾の2は、これが内部的には文字列表示APIのモード2を利用していることを表しているので、putString1の改良版という意味ではありません。
- ちなみに文字列表示APIはモード0からモード6まであります。
- この機能は OSECPU ver.0.55 から使えます。
- lenに文字数を入れて(定数かRxx)、sにはPxxを入れてください。
(3) ポインタ型変数
- 上記の(2)の説明を書いてから気が付きました。実はここまでまったくポインタ型変数の話を書いていなかったと。これではいけないので、書きます。そろそろ書いてもいい時期です。
- 以下のような構文で変数を宣言することができます。
VPtr p:P01;
- これはpという変数を宣言しており、P01というレジスタに割り当てられます。要するに、pはP01の別名でしかないのです。
- 変数名は整数型変数の時と同様に大文字小文字を区別しますので、pとPを使い分けることができます。
- レジスタ名はP00~P3Fまでが有効ですが(後ろの2桁は16進数になっている)、とりあえずP01~P1Fまでを自由に使うのがいいと思います。・・・これは言い換えれば31個しかないということでもあります。ポインタ型変数は最大で31個しか作れないのです!これはつらい!!
- いやでも実際のところ、31個で足りないと思うことはあまりないのではないかと思います。今までポインタ型変数は全く使わなくてもどうにかなってきたわけですし、まあ使っても数個じゃないでしょうか?
- ちなみにVPtrはVoidPtrの略です。C言語で言うところの void * です。
- 本当は int32s * や、UINT8 * などのように型を記述できるようにしたいのですが、ASKAのほうが十分に対応できていません。OSECPU側は準備完了しているのですが・・・。
こめんと欄