ページへ戻る
印刷
GUIGUI01/memo26
をテンプレートにして作成 ::
OSASK計画
osaskwiki
:GUIGUI01/memo26 をテンプレートにして作成
開始行:
TITLE:x
* ぐいぐい01に関するメモ-26
-(by [[K]], 2009.01.12)
-メモのうち重要な部分をそのうちまとめてまともなページを作る
*** (38) GOで「ぐいぐい01」アプリを作る(4)
-[[GUIGUI01/memo25]]の続きです。仕様変更ももうそんなには...
----
-ex0016では、cmdusage[ ]が合計18バイトにまで増えました。...
-ex0016のcmdusage[ ]の中には、16進数の1の位に「c」が出て...
//ちなみに最初の 0x86, 0x5c, ?, の「c」の部分は4までしか...
-何を言っているのかよく分からないと思いますが、たとえば、
0x86, 0x5c, 0,
-の部分を考えましょう。これは、
0x86, 0x50,
-と短く書けるのです。これで1バイト節約できます。同じよう...
#include <guigui01.h>
unsigned char cmdusage[] = {
0x86, 0x50,
0x00, 's', 0x33, 's', 't', 'r',
0x10, 'n', 0x11, '#',
0x40
};
void G01Main()
{
(ex0015.cと同じ内容)
}
-これをmakeすると128バイトになります。でも動作はex0016と...
----
-じゃあもう一つ小さくする技を。ex0017では引数が「s:str」...
--そういえば今まで説明してきませんでしたが、引数名は半角...
!#'=~+-/@_\^` ;?*&
-ということでex0018.cです。
#include <guigui01.h>
unsigned char cmdusage[] = {
0x86, 0x50,
0x02, 's', 't', 'r', 0x34, 0x01, 'i', 'n', 'g',
0x12, 'n', 'u', 'm', 0x14, 0x01, 'b', 'e', 'r',
0x40
};
void G01Main()
{
(ex0015.cと同じ内容)
}
-ここでまたサイズを節約するテクニックを使いました。という...
-makeすると136バイトになります。一応usage表示を見て確認し...
>efg01 ex0018.g01
usage>ex0018.g01 [str:]string [[num:]number]
----
-こうしてコマンドラインにたくさん引数を使うようになると、...
-ということでex0019.cです。
#include <guigui01.h>
unsigned char cmdusage[] = {
0x86, 0x50,
0x02, 's', 't', 'r', 0x34, 0x01, 'i', 'n', 'g',
0x87,
0x12, 'n', 'u', 'm', 0x14, 0x01, 'b', 'e', 'r',
0x40
};
void G01Main()
{
(ex0015.cと同じ内容)
}
-これをmakeすると137バイトになりますが、注目ポイントは 0x...
-これをusage表示させるとこうなります。
>efg01 ex0019.g01
usage>ex0019.g01 [str:]string
[[num:]number]
----
-さてここまでで整数型引数と文字列型引数を紹介してきました...
#include <guigui01.h>
unsigned char cmdusage[] = {
0x86, 0x51, /* フラグ型は自動当てはめ対象からははず...
0x13, 'd', 'o', 'w', 'n', 0x20,
/* フラグ型は当然省略可能に。そしてフラグ型には...
0x00, 'n', 0x11, '#',
0x40
};
void setdec(char *s, int i, int n)
{
(ex0010.cと同じ内容)
}
void G01Main()
{
int i, n;
char s[4];
g01_setcmdlin(cmdusage);
n = g01_getcmdlin_int_s(1);
if (g01_getcmdlin_flag_o(0) == 0) {
/* down指定がない場合 */
for (i = 0; i <= n; i++) {
setdec(s, i, 3);
s[3] = 0;
g01_putstr0(s);
}
} else {
/* down指定がある場合 */
for (i = n; i >= 0; i--) {
setdec(s, i, 3);
s[3] = 0;
g01_putstr0(s);
}
}
return;
}
-これをmakeすると249バイトになります。そしてusageを出して...
>efg01 ex0020.g01
usage>ex0020.g01 [down] [n:]#
-適当に実行してみるとこんな感じです。
>efg01 ex0020.g01 10
0 1 2 3 4 5 6 7 8 9 10
>efg01 ex0020.g01 7 down
7 6 5 4 3 2 1 0
-プログラムから推測できるように、 0x2c がフラグ型になりま...
>efg01 ex0020.g01 7 down:
7 6 5 4 3 2 1 0
-フラグがコマンドライン中に存在していれば、g01_getcmdlin_...
* こめんと欄
- このシリーズは好評のようです。実際にアプリを作って遊ん...
- abcdw014向けの記述に修正。 -- ''K'' &new{2009-01-16 (金...
#comment
終了行:
TITLE:x
* ぐいぐい01に関するメモ-26
-(by [[K]], 2009.01.12)
-メモのうち重要な部分をそのうちまとめてまともなページを作る
*** (38) GOで「ぐいぐい01」アプリを作る(4)
-[[GUIGUI01/memo25]]の続きです。仕様変更ももうそんなには...
----
-ex0016では、cmdusage[ ]が合計18バイトにまで増えました。...
-ex0016のcmdusage[ ]の中には、16進数の1の位に「c」が出て...
//ちなみに最初の 0x86, 0x5c, ?, の「c」の部分は4までしか...
-何を言っているのかよく分からないと思いますが、たとえば、
0x86, 0x5c, 0,
-の部分を考えましょう。これは、
0x86, 0x50,
-と短く書けるのです。これで1バイト節約できます。同じよう...
#include <guigui01.h>
unsigned char cmdusage[] = {
0x86, 0x50,
0x00, 's', 0x33, 's', 't', 'r',
0x10, 'n', 0x11, '#',
0x40
};
void G01Main()
{
(ex0015.cと同じ内容)
}
-これをmakeすると128バイトになります。でも動作はex0016と...
----
-じゃあもう一つ小さくする技を。ex0017では引数が「s:str」...
--そういえば今まで説明してきませんでしたが、引数名は半角...
!#'=~+-/@_\^` ;?*&
-ということでex0018.cです。
#include <guigui01.h>
unsigned char cmdusage[] = {
0x86, 0x50,
0x02, 's', 't', 'r', 0x34, 0x01, 'i', 'n', 'g',
0x12, 'n', 'u', 'm', 0x14, 0x01, 'b', 'e', 'r',
0x40
};
void G01Main()
{
(ex0015.cと同じ内容)
}
-ここでまたサイズを節約するテクニックを使いました。という...
-makeすると136バイトになります。一応usage表示を見て確認し...
>efg01 ex0018.g01
usage>ex0018.g01 [str:]string [[num:]number]
----
-こうしてコマンドラインにたくさん引数を使うようになると、...
-ということでex0019.cです。
#include <guigui01.h>
unsigned char cmdusage[] = {
0x86, 0x50,
0x02, 's', 't', 'r', 0x34, 0x01, 'i', 'n', 'g',
0x87,
0x12, 'n', 'u', 'm', 0x14, 0x01, 'b', 'e', 'r',
0x40
};
void G01Main()
{
(ex0015.cと同じ内容)
}
-これをmakeすると137バイトになりますが、注目ポイントは 0x...
-これをusage表示させるとこうなります。
>efg01 ex0019.g01
usage>ex0019.g01 [str:]string
[[num:]number]
----
-さてここまでで整数型引数と文字列型引数を紹介してきました...
#include <guigui01.h>
unsigned char cmdusage[] = {
0x86, 0x51, /* フラグ型は自動当てはめ対象からははず...
0x13, 'd', 'o', 'w', 'n', 0x20,
/* フラグ型は当然省略可能に。そしてフラグ型には...
0x00, 'n', 0x11, '#',
0x40
};
void setdec(char *s, int i, int n)
{
(ex0010.cと同じ内容)
}
void G01Main()
{
int i, n;
char s[4];
g01_setcmdlin(cmdusage);
n = g01_getcmdlin_int_s(1);
if (g01_getcmdlin_flag_o(0) == 0) {
/* down指定がない場合 */
for (i = 0; i <= n; i++) {
setdec(s, i, 3);
s[3] = 0;
g01_putstr0(s);
}
} else {
/* down指定がある場合 */
for (i = n; i >= 0; i--) {
setdec(s, i, 3);
s[3] = 0;
g01_putstr0(s);
}
}
return;
}
-これをmakeすると249バイトになります。そしてusageを出して...
>efg01 ex0020.g01
usage>ex0020.g01 [down] [n:]#
-適当に実行してみるとこんな感じです。
>efg01 ex0020.g01 10
0 1 2 3 4 5 6 7 8 9 10
>efg01 ex0020.g01 7 down
7 6 5 4 3 2 1 0
-プログラムから推測できるように、 0x2c がフラグ型になりま...
>efg01 ex0020.g01 7 down:
7 6 5 4 3 2 1 0
-フラグがコマンドライン中に存在していれば、g01_getcmdlin_...
* こめんと欄
- このシリーズは好評のようです。実際にアプリを作って遊ん...
- abcdw014向けの記述に修正。 -- ''K'' &new{2009-01-16 (金...
#comment
ページ名: