page0048
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* OSECPU-ASKA入門 #0006
-(by [[K]], 2013.07.03)
** (0) はじめに
-以下の記事はver.0.54のWindows版を前提にしています。他の...
--たとえば osecpu054d.zip とかのことです
~
-もくじ
--[[page0036]]: #0000
--[[page0037]]: #0001
--[[page0038]]: #0002
--[[page0039]]: #0003
--[[page0044]]: #0004
--[[page0045]]: #0005
--[[page0048]]: #0006
** (1) rand
-junkApi_rand(_i, max); :
--適当な乱数を返します。OSECPUでは起動時にシステムが適当...
--もちろんseedをアプリで指定し、系列を選択することもでき...
--このAPIによって 0 <= i <= max の乱数が返ります。
--maxが0のときは、iの値はSInt32の任意の値を取ることになり...
** (2) putString2
-junkApi_putString2(len, s); :
--junkApi_putConstStringは文字定数のみが指定可能でしたが...
--末尾の2は、これが内部的には文字列表示APIのモード2を利用...
---ちなみに文字列表示APIはモード0からモード6まであります。
--この機能は OSECPU ver.0.55 から使えます。
--lenに文字数を入れて(定数かRxx)、sにはPxxを入れてくだ...
** (3) ポインタ型変数
-上記の(2)の説明を書いてから気が付きました。実はここまで...
-以下のような構文で変数を宣言することができます。
VPtr p:P01;
-これはpという変数を宣言しており、P01というレジスタに割り...
-変数名は整数型変数の時と同様に大文字小文字を区別しますの...
-レジスタ名はP00~P3Fまでが有効ですが(後ろの2桁は16進数...
--いやでも実際のところ、31個で足りないと思うことはあまり...
-ちなみにVPtrはVoidPtrの略です。C言語で言うところの void ...
--本当は int32s * や、UInt8 * などのように型を記述できる...
-ポインタとは一体何なのか・・・。C言語とかになれていない...
** (4) ポインタの配列変数的用法
-ところで、
VPtr p:P01;
-みたいに書いたとしても、それですぐにpを配列変数として利...
junkApi_malloc(p, T_SINT32, 100);
-これを実行すると、p[0]からp[99]までの合計100個が使えるよ...
-しかし・・・ASKAは例によってまだおバカさんなので、p[0]と...
i = 0; // SInt32 i:R00, j:R01; とかを事前にやっておく.
PALMEM0(j, T_SINT32, p, i); // j = p[i]; の代わり.
PASMEM0(j, T_SINT32, p, i); // p[i] = j; の代わり.
// PALMEMのあとの文字は、オーではなくゼロです、PASMEM0...
-OSECPUは少しでも命令種を減らすために、定数が指定できない...
-OSECPUはセキュアなOSなので、仮にmallocをやる前にPASMEM0(...
-エラーの時は(リリースモードでamakeしてなければ)、ソー...
-整数レジスタの変数の時は、int32s(SInt32)の一種類しかあ...
-それ以外の型ですと、保持できない数値を代入してしまった時...
-malloc直後の配列変数の値は、基本的にすべて不定です。もし...
~
-ASAKでは、配列を式の中に混ぜて表記する方法をまだサポート...
-PASMEM0(j, T_SINT32, p, i); についても、このjやiの部分に...
--早く p[i] = j + 5; とか書けるようになりたいです!
-利用可能な型は次の通りです。
--T_SINT8, T_UINT8, T_SINT16, T_UINT16, T_SINT32, T_UINT3...
--T_SINT4, T_UINT4, T_SINT2, T_UINT2, T_SINT1, T_UINT1 : ...
---T_UINT1は、0か1しか保持できません
---T_SINT1は、0か-1しか保持できません
--T_SINT12, T_UINT12, T_SINT20, T_UINT20, T_SINT24, T_UIN...
--T_VPtr : ポインタ型変数を保持できる型
-(つづく)
* こめんと欄
#comment
終了行:
* OSECPU-ASKA入門 #0006
-(by [[K]], 2013.07.03)
** (0) はじめに
-以下の記事はver.0.54のWindows版を前提にしています。他の...
--たとえば osecpu054d.zip とかのことです
~
-もくじ
--[[page0036]]: #0000
--[[page0037]]: #0001
--[[page0038]]: #0002
--[[page0039]]: #0003
--[[page0044]]: #0004
--[[page0045]]: #0005
--[[page0048]]: #0006
** (1) rand
-junkApi_rand(_i, max); :
--適当な乱数を返します。OSECPUでは起動時にシステムが適当...
--もちろんseedをアプリで指定し、系列を選択することもでき...
--このAPIによって 0 <= i <= max の乱数が返ります。
--maxが0のときは、iの値はSInt32の任意の値を取ることになり...
** (2) putString2
-junkApi_putString2(len, s); :
--junkApi_putConstStringは文字定数のみが指定可能でしたが...
--末尾の2は、これが内部的には文字列表示APIのモード2を利用...
---ちなみに文字列表示APIはモード0からモード6まであります。
--この機能は OSECPU ver.0.55 から使えます。
--lenに文字数を入れて(定数かRxx)、sにはPxxを入れてくだ...
** (3) ポインタ型変数
-上記の(2)の説明を書いてから気が付きました。実はここまで...
-以下のような構文で変数を宣言することができます。
VPtr p:P01;
-これはpという変数を宣言しており、P01というレジスタに割り...
-変数名は整数型変数の時と同様に大文字小文字を区別しますの...
-レジスタ名はP00~P3Fまでが有効ですが(後ろの2桁は16進数...
--いやでも実際のところ、31個で足りないと思うことはあまり...
-ちなみにVPtrはVoidPtrの略です。C言語で言うところの void ...
--本当は int32s * や、UInt8 * などのように型を記述できる...
-ポインタとは一体何なのか・・・。C言語とかになれていない...
** (4) ポインタの配列変数的用法
-ところで、
VPtr p:P01;
-みたいに書いたとしても、それですぐにpを配列変数として利...
junkApi_malloc(p, T_SINT32, 100);
-これを実行すると、p[0]からp[99]までの合計100個が使えるよ...
-しかし・・・ASKAは例によってまだおバカさんなので、p[0]と...
i = 0; // SInt32 i:R00, j:R01; とかを事前にやっておく.
PALMEM0(j, T_SINT32, p, i); // j = p[i]; の代わり.
PASMEM0(j, T_SINT32, p, i); // p[i] = j; の代わり.
// PALMEMのあとの文字は、オーではなくゼロです、PASMEM0...
-OSECPUは少しでも命令種を減らすために、定数が指定できない...
-OSECPUはセキュアなOSなので、仮にmallocをやる前にPASMEM0(...
-エラーの時は(リリースモードでamakeしてなければ)、ソー...
-整数レジスタの変数の時は、int32s(SInt32)の一種類しかあ...
-それ以外の型ですと、保持できない数値を代入してしまった時...
-malloc直後の配列変数の値は、基本的にすべて不定です。もし...
~
-ASAKでは、配列を式の中に混ぜて表記する方法をまだサポート...
-PASMEM0(j, T_SINT32, p, i); についても、このjやiの部分に...
--早く p[i] = j + 5; とか書けるようになりたいです!
-利用可能な型は次の通りです。
--T_SINT8, T_UINT8, T_SINT16, T_UINT16, T_SINT32, T_UINT3...
--T_SINT4, T_UINT4, T_SINT2, T_UINT2, T_SINT1, T_UINT1 : ...
---T_UINT1は、0か1しか保持できません
---T_SINT1は、0か-1しか保持できません
--T_SINT12, T_UINT12, T_SINT20, T_UINT20, T_SINT24, T_UIN...
--T_VPtr : ポインタ型変数を保持できる型
-(つづく)
* こめんと欄
#comment
ページ名: