サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
5: 2010-02-04 (木) 18:23:22 lina ソース 6: 2010-02-05 (金) 12:29:21 lina ソース
Line 145: Line 145:
第一引数をプログラム内に受け取るにはどうしたらえぇんじゃろ・・・見つからないなぁ・・・ 第一引数をプログラム内に受け取るにはどうしたらえぇんじゃろ・・・見つからないなぁ・・・
 +
 +引数をプログラム内に受け取ると思われる関数は以下のとおり。
 +
 +
 +-g01_getcmdlin_exit1() __asm__ __volatile__("call _g01_execcmd0\n\t.byte 0x86,0xbf")
 +-g01_getcmdlin_fopen_s(i)
 +-g01_getcmdlin_fopen_o(i)
 +-g01_getcmdlin_fopen_m(i, j)
 +-g01_getcmdlin_fopen_s_0_4(i) __asm__ __volatile__("call _g01_execcmd0\n\t.byte 0x86,0x60,0x04"::"a"(i):"%esi","%edi","cc")
 +-g01_getcmdlin_fopen_s_3_5(i) __asm__ __volatile__("call _g01_execcmd0\n\t.byte 0x86,0x60,0x35"::"a"(i):"%esi","%edi","cc")
 +-g01_getcmdlin_fopen_m_0_4(int i, int j)
 +-g01_getcmdlin_fopen_o_0_4(int i)
 +-g01_getcmdlin_fopen_o_3_5(int i)
 +-g01_getcmdlin_flag_s(int i)
 +-g01_getcmdlin_flag_o(i) g01_getcmdlin_flag_s(i)
 +-g01_getcmdlin_int_s(i) g01_getcmdlin_flag_s(i)
 +-g01_getcmdlin_int_o(int i, int d)
 +-g01_getcmdlin_str_s0(i, n, p) __asm__ __volatile__("call _g01_execcmd0\n\t.byte 0x86, 0x61, 0x36, 0x02"::"c"(i),"a"(n),"d"(p):"%esi","%edi","cc","memory")
 +-g01_getcmdlin_str_s0_0(n, p) __asm__ __volatile__("call _g01_execcmd0\n\t.byte 0x86, 0x03, 0x60, 0x20"::"a"(n),"d"(p):"%esi","%edi","cc","memory")
 +-g01_getcmdlin_str_o0(int i, int n, void *p)
 +-int g01_getcmdlin_str_m0_1(int j, int n, void *p)
 +-g01_getcmdlin_argc(int i)
 +-g01_getcmdlin_put0_s(i) __asm__ __volatile__("call _g01_execcmd0\n\t.byte 0x86,0xbc,0x60"::"a"(i):"%esi","%edi","cc")
 +-g01_getcmdlin_put1_s(i) __asm__ __volatile__("call _g01_execcmd0\n\t.byte 0x86,0xbd,0x60"::"a"(i):"%esi","%edi","cc")
 +-g01_getcmdlin_put0_m_exit1(i, j) __asm__ __volatile__("call _g01_execcmd0\n\t.byte 0x38,0x6b,0xc6,0x01,0x43,0x10"::"a"(i),"c"(j))
 +-g01_getcmdlin_put1_m_exit1(i, j) __asm__ __volatile__("call _g01_execcmd0\n\t.byte 0x38,0x6b,0xd6,0x01,0x43,0x10"::"a"(i),"c"(j))
 +-g01_cmdlin3s(int l) {}
 +-g01_cmdlin3m(int l, int i) {}
 +-g01_cmdlin4s(int l) {}
 +-g01_cmdlin4m(int l, int i) {}
 +-g01_cmdlin5s(int l) {}
 +-g01_cmdlin5m(int l, int i) {}
 +-g01_cmdlin6s1(int l, int n, void *p) {}
 +-g01_cmdlin6m1(int l, int i, int n, void *p) {}
 +-jg01_getcmdline0 jg01_getcmdlin1
 +-jg01_getcmdline1 jg01_getcmdlin0
 +-jg01_getcmdlin0(int n, void *p)
 +-jg01_getcmdlin1(n, p) __asm__ __volatile__("call _g01_execcmd0\n\t.byte 0x7b,0x99,0x80,0x10,0x36,0x02"::"a"(n),"d"(p):"%esi","%edi","cc")
 +
 +**引数受け取り関数の整理(予測ね。実験しながら・・・) [#y256f834]
 +引数には、定義した順に0から番号が付いているらしい。
 +
 +-int g01_getcmdlin_argc(int 引数番号)
 +--指定した番号の引数があるかないか。あれが1、なければ0を返す
 +たとえばこういう設定をしたとする。
 + unsigned char cmdusage[] = {
 +   0x86,  /* これは決まり文句なのでとりあえず変更しない */
 +   0x55,  /* 引数名省略可能モード */
 +
 +   0x1c, 2, 'o','p','t', 0x0c, 9, 0x01, 'i', 'o', 'n', '-', 'f', 'i', 'l', 'e', ←引数番号0
 +   0x0c, 2, 'o','u','t', 0x0c, 9, 0x01, 'p', 'u', 't', '-', 'f', 'i', 'l', 'e',  ←引数番号1
 +
 +   0x40 /* 最後のこれも決まり文句なので変更しない */
 + };
 +
 + ↓Usage表示(コマンドラインの設定)はこうなる。
 + usage>test.g01 [opt:option-file] out:output-file
 +
 +このプログラム内で
 + int i; i = g01_getcmdlin_argc(0);
 +こんなことしたとする。引数を付けて実行してみると・・・
 + >hijk.exe test.g01 opt:hogehoge.txt out:ugougo.txt
 +  i=1                                                    ←0番目の引数が存在するぞ!
 +
 + >hijk.exe test.g01 out:ugougo.txt
 +  i=0                                                    ←0番目の引数は指定されてない(空)だぞ!
 +
 +・・・・・こういうことでいいのかな・・・・・
 +
 +たとえばこの例だと、0番引数optは、「もし指定があればそのファイル名を使え。でもなければ、ディフォルトのosalink1.optを使用してくれ」という動作をさせたい。とういう場合は・・・
 + int i;
 + i = g01_getcmdlin_argc(0);
 + if( i == 0 ) {
 +     g01_fopen(1,4,"osalink1.opt");
 + }else {
 +     g01_fopen(1,4,getcmdlinexxxxxxx);
 + }
 +
 +こういう処理をしてあげればいい・・・のかな・・・(これ合ってるかな)
 +
 +
 +
 +***ファイル名取得&オープン系 [#e8caaf50]
 +まいったなこんなにあるよ・・・どれがどれだがよくわからん・・・
 +
 +-g01_getcmdlin_fopen_s(i)
 +-g01_getcmdlin_fopen_o(i)
 +-g01_getcmdlin_fopen_m(i, j)
 +-g01_getcmdlin_fopen_s_0_4(i)
 +-g01_getcmdlin_fopen_s_3_5(i)
 +-g01_getcmdlin_fopen_m_0_4(int i, int j)
 +-g01_getcmdlin_fopen_o_0_4(int i)
 +-g01_getcmdlin_fopen_o_3_5(int i)
 +
 +各関数のfopenの後ろの文字の意味。
 +-o
 +--オプショナル型ということらしい。省略可能なものを扱うものらしい。
 +-s
 +--シングル型。通常型らしい。つまり省略可能ではないものの場合に使う・・・のかな?
 +
 +*getcmdlin分類 [#e846e38b]
 +ダメだ・・・ちょっと分類を組み立てなおし!
 +
 +-g01_getcmdlinは引数をプログラム内に受け取る関数郡。
 +
 +**g01_getcmdlin_int系 [#b5c59937]
 +数字タイプの引数を受け取るもの。(intなので多分int型変数の制限を受けると思う。0~4294967295 or -2147483648~2147483647 とかの。)
 +
 +***g01_getcmdlin_int_s系 [#v6ad5653]
 +省略不可(普通?シングル型というらしい)の引数を取得する。省略不可なのだから、指定がなかったりすればエラーとなる(・・・はず・・・)
 +
 + int g;                          ←引数を受け取る変数
 + int i; i = 0;                    ←引数番号を指定する。0なので、一番最初に定義された引数
 + g = g01_getcmdlin_int_s(i);      ←問題なければgに引数の内容が入る
 +
 +
 +***g01_getcmdlin_int_o系 [#l0f77b1a]
 +省略可能(オプショナル型というらしい)の引数を取得する。省略可能なのだから、指定がなかったりしてもエラーにならない
 +
 +**g01_getcmdlin_str系 [#t4f1bd5b]
 +文字列型のデータを受け取る。
 +
 +
 +
 +**g01_getcmdlin_fopen系 [#t3509916]
 +ファイルパスタイプのデータを受け取る。(ファイルパスを受け取って開かないわけはない!ということで、fopenと一体型になっているのだろう。きっと)
*COLOR(red){オイラ的な備考} [#o91a8f8f] *COLOR(red){オイラ的な備考} [#o91a8f8f]
このUsage表示(コマンドライン定義)では、省略形を使う場合はかならずソースにベタ書きをのこしておくといいと思う。 このUsage表示(コマンドライン定義)では、省略形を使う場合はかならずソースにベタ書きをのこしておくといいと思う。

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ
新着

目次
メンバー一覧


最新の20件
2016-10-01 2016-09-08
  • @MenuBar.
2016-09-07 2016-09-04 2016-08-15 2015-09-23 2014-07-30 2014-07-04 2014-02-04 2013-10-26 2013-06-21 2013-06-17 2013-06-15 2013-04-02 2013-02-09 2013-02-04 2012-12-25 2012-12-01 2012-05-28 2012-03-31

トピック一覧
一般用コメント最新
新掲示板lina
2016/9/5 20:58
SandBoxゲスト
2016/9/4 12:01
RecentDeletedlina
2015/6/2 19:29
Old-OSASK-MLlina
2014/6/29 9:14
hideyosi/メールhideyosi
2014/1/6 20:17
hideyosi/募集中lina
2013/11/8 19:56

このサイトは川合秀実から委託を受けて、OSASKコミュニティによって管理・運営されています。