jpag0002
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* junkなpage #0002
-(by [[K]], 2013.06.26)
** (0) はじめに
-[[jpag0001]]をOSECPU ver0.51用に書き直し
** (1) 配列(?)を使ったプログラム例
-「エラトステネスのふるい」のアルゴリズムを使った素数表示...
#include "osecpu_ask.h"
#define L_putDec LOCAL(0)
LOCALLABELS(1);
#define putDec(i) R30=i; CALL(L_putDec)
// main
do {
int32s i:R00, j:R02;
VoidPtr p:P01;
junkApi_malloc(P01, T_UINT1, 1000); // p
R01 = 0;
for (i = 2; i != 1000; i++) {
PASMEM0(R01, T_UINT1, p, i);
}
R01 = 1;
for (i = 2; i != 1000; i++) {
j = i * 2;
for (;;) {
if (j >= 1000) break;
PASMEM0(R01, T_UINT1, p, j);
j += i;
}
}
for (i = 2; i != 1000; i++) {
PALMEM0(R01, T_UINT1, p, i);
if (R01 == 0) {
putDec(i);
junkApi_putConstString(' ');
}
}
}
beginFunc(L_putDec);
do {
int32s i:R00, flag:R01, j:R02, ii:R03;
i = R30;
flag = 0;
if (i < 0) {
junkApi_putConstString('-');
i *= -1;
}
for (j = 1000000000; j >= 10; j /= 10) {
ii = i / j;
i %= j;
if (!(flag == 0 & ii == 0)) {
flag = 1;
ii += '0';
junkApi_putchar(ii);
}
}
i += '0';
junkApi_putchar(i);
}
endFunc();
-[解説]
-junkApi_malloc(P01, T_UINT1, 1000);
--1ビットの符号なし整数1000個分のメモリをシステムからもら...
--OSECPUでは1ビットの配列という、C言語ではなかなかできな...
--その他の型のIDについては以下の通りです。
#define T_SINT8 0x02 // 8bitの符号付き, いわゆる sig...
#define T_UINT8 0x03
#define T_SINT16 0x04 // 16bitの符号付き, いわゆる sh...
#define T_UINT16 0x05
#define T_SINT32 0x06
#define T_UINT32 0x07
#define T_SINT4 0x08
#define T_UINT4 0x09
#define T_SINT2 0x0a
#define T_UINT2 0x0b
#define T_SINT1 0x0c // 代入できるのは0か-1のみ.
#define T_UINT1 0x0d
#define T_SINT12 0x0e
#define T_UINT12 0x0f
#define T_SINT20 0x10
#define T_UINT20 0x11
#define T_SINT24 0x12
#define T_UINT24 0x13
#define T_SINT28 0x14
#define T_UINT28 0x15
-PADD(P02, T_UINT1, P01, R00);
--ポインタレジスタP01は、T_UINT1を指し示すポインタである...
--P02 = &P01[R00]; みたいな感じです。
-SMEM0(R01, T_UINT1, P02);
--P02で指し示されるメモリにR01の値を書き込みます。
--こんなふうに型を毎回明示する必要があります。そしてmallo...
--型を間違えるとだめなのは、PADDのときも同様です。
--末尾の0は、オーではなくゼロです。
-LMEM0(R01, T_UINT1, P02);
--P02で指し示されるメモリにアクセスして、その値をR01に代...
--その他についてはSMEM0()と同様です。
-PASMEM0はPADDとSMEM0をくっつけた命令です。PALMEM0はPADD...
--配列のi番目にアクセスする、みたいな感じです。
* こめんと欄
#comment
終了行:
* junkなpage #0002
-(by [[K]], 2013.06.26)
** (0) はじめに
-[[jpag0001]]をOSECPU ver0.51用に書き直し
** (1) 配列(?)を使ったプログラム例
-「エラトステネスのふるい」のアルゴリズムを使った素数表示...
#include "osecpu_ask.h"
#define L_putDec LOCAL(0)
LOCALLABELS(1);
#define putDec(i) R30=i; CALL(L_putDec)
// main
do {
int32s i:R00, j:R02;
VoidPtr p:P01;
junkApi_malloc(P01, T_UINT1, 1000); // p
R01 = 0;
for (i = 2; i != 1000; i++) {
PASMEM0(R01, T_UINT1, p, i);
}
R01 = 1;
for (i = 2; i != 1000; i++) {
j = i * 2;
for (;;) {
if (j >= 1000) break;
PASMEM0(R01, T_UINT1, p, j);
j += i;
}
}
for (i = 2; i != 1000; i++) {
PALMEM0(R01, T_UINT1, p, i);
if (R01 == 0) {
putDec(i);
junkApi_putConstString(' ');
}
}
}
beginFunc(L_putDec);
do {
int32s i:R00, flag:R01, j:R02, ii:R03;
i = R30;
flag = 0;
if (i < 0) {
junkApi_putConstString('-');
i *= -1;
}
for (j = 1000000000; j >= 10; j /= 10) {
ii = i / j;
i %= j;
if (!(flag == 0 & ii == 0)) {
flag = 1;
ii += '0';
junkApi_putchar(ii);
}
}
i += '0';
junkApi_putchar(i);
}
endFunc();
-[解説]
-junkApi_malloc(P01, T_UINT1, 1000);
--1ビットの符号なし整数1000個分のメモリをシステムからもら...
--OSECPUでは1ビットの配列という、C言語ではなかなかできな...
--その他の型のIDについては以下の通りです。
#define T_SINT8 0x02 // 8bitの符号付き, いわゆる sig...
#define T_UINT8 0x03
#define T_SINT16 0x04 // 16bitの符号付き, いわゆる sh...
#define T_UINT16 0x05
#define T_SINT32 0x06
#define T_UINT32 0x07
#define T_SINT4 0x08
#define T_UINT4 0x09
#define T_SINT2 0x0a
#define T_UINT2 0x0b
#define T_SINT1 0x0c // 代入できるのは0か-1のみ.
#define T_UINT1 0x0d
#define T_SINT12 0x0e
#define T_UINT12 0x0f
#define T_SINT20 0x10
#define T_UINT20 0x11
#define T_SINT24 0x12
#define T_UINT24 0x13
#define T_SINT28 0x14
#define T_UINT28 0x15
-PADD(P02, T_UINT1, P01, R00);
--ポインタレジスタP01は、T_UINT1を指し示すポインタである...
--P02 = &P01[R00]; みたいな感じです。
-SMEM0(R01, T_UINT1, P02);
--P02で指し示されるメモリにR01の値を書き込みます。
--こんなふうに型を毎回明示する必要があります。そしてmallo...
--型を間違えるとだめなのは、PADDのときも同様です。
--末尾の0は、オーではなくゼロです。
-LMEM0(R01, T_UINT1, P02);
--P02で指し示されるメモリにアクセスして、その値をR01に代...
--その他についてはSMEM0()と同様です。
-PASMEM0はPADDとSMEM0をくっつけた命令です。PALMEM0はPADD...
--配列のi番目にアクセスする、みたいな感じです。
* こめんと欄
#comment
ページ名: