サイトトップへ
OSASK.NET
SourceForge.JP
サイトトップへ       新掲示板   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)   最新チェッカー      
2: 2004-05-04 (Tue) 17:40:14 source Cur: 2009-11-17 (Tue) 00:00:00 k-tan source
Line 5: Line 5:
-512バイトに収めるということになると、どうしてもアセンブラが有利になってしまうので(いやもちろん1KBでもアセンブラが有利ですが)、C言語ファンの人がもっと有利に戦えるように、ここにテクニックをまとめたいと思います。 -512バイトに収めるということになると、どうしてもアセンブラが有利になってしまうので(いやもちろん1KBでもアセンブラが有利ですが)、C言語ファンの人がもっと有利に戦えるように、ここにテクニックをまとめたいと思います。
-まずは最新版<guigui00.h>を入手しましょう。これはosa_dir3にバンドル予定されているものですが、たぶん5/12にosa_dir3が間に合わないので、とりあえず以下のURLからダウンロードしてください。osa_dir2のz_tools/guigui00/guigui00.hを上書きすればOKです。 -まずは最新版<guigui00.h>を入手しましょう。これはosa_dir3にバンドル予定されているものですが、たぶん5/12にosa_dir3が間に合わないので、とりあえず以下のURLからダウンロードしてください。osa_dir2のz_tools/guigui00/guigui00.hを上書きすればOKです。
---http://k.hideyosi.com/test060.lzh (4.24KB)+--http://k.hideyosi.com/test062.lzh (26.3KB)
-さて結局のところ、アセンブラがC言語に対してやたらと有利なのは、lib_execcmdをじゃんじゃん使うからです(と僕は思う)。まあそりゃあもちろん出力されるコードの質も違いますが。しかしとにかくCでもlib_execcmdを活用すれば、その差は縮むのです。ということでここではlib_execcmdの活用を中心に説明します。 -さて結局のところ、アセンブラがC言語に対してやたらと有利なのは、lib_execcmdをじゃんじゃん使うからです(と僕は思う)。まあそりゃあもちろん出力されるコードの質も違いますが。しかしとにかくCでもlib_execcmdを活用すれば、その差は縮むのです。ということでここではlib_execcmdの活用を中心に説明します。
Line 43: Line 43:
 #define _                    (void *)  #define _                    (void *)
 #define __(a, b, c, d)        (void *) (a | b << 8 | c << 16 | d << 24)  #define __(a, b, c, d)        (void *) (a | b << 8 | c << 16 | d << 24)
 + 
     static void *cmd0[] = {      static void *cmd0[] = {
         _ LIB_FN_INIT, _ &lib_work,          _ LIB_FN_INIT, _ &lib_work,
Line 109: Line 109:
|lib_opensoundtrack|LIB_FN_OPENSOUNDTRAK|| |lib_opensoundtrack|LIB_FN_OPENSOUNDTRAK||
|lib_controlfreq|LIB_FN_CONTROLFREQ|| |lib_controlfreq|LIB_FN_CONTROLFREQ||
-|lib_loadfontset|LIB_FN_LOADFONTSET|| 
|lib_loadfontset0|LIB_FN_LOADFONTSET0|| |lib_loadfontset0|LIB_FN_LOADFONTSET0||
|lib_makecharset|LIB_FN_MAKECHARSET|| |lib_makecharset|LIB_FN_MAKECHARSET||
Line 151: Line 150:
-lib_unmapmodule (LIB_FN_UNMAPMODULE) -lib_unmapmodule (LIB_FN_UNMAPMODULE)
--addrの後ろに0x000cを追加。 --addrの後ろに0x000cを追加。
 +-lib_loadfontset (LIB_FN_LOADFONTSET)
 +--最後に0x000cを追加。
-lib_wsjis2gg00jpn0 (LIB_FN_WSJIS2GG00JPN0) -lib_wsjis2gg00jpn0 (LIB_FN_WSJIS2GG00JPN0)
---先頭にoptとして1を追加、sjisとgg00jpnのうしろにそれぞれ0x000cを追加。+--先頭にoptとして1を追加、sjisとgg00jpnの後ろにそれぞれ0x000cを追加。
-lib_seuc2gg00 (LIB_FN_SEUC2GG00) -lib_seuc2gg00 (LIB_FN_SEUC2GG00)
--先頭にoptとして2を追加、seucとgg00のうしろにそれぞれ0x000cを追加。 --先頭にoptとして2を追加、seucとgg00のうしろにそれぞれ0x000cを追加。
Line 165: Line 166:
* こめんと欄 * こめんと欄
 +-guigui00.hをインラインアセンブラ化するってのはどうかな……ってこりゃ最後の数バイトか -- [[I.Tak.]] SIZE(10){2004-05-06 (木) 08:24:17}
 +
#comment #comment

Front page   Diff Backup Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help
ログイン
ユーザー名:
パスワード:
 
新着

目次
メンバー一覧


recent(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コミュニティによって管理・運営されています。
このサイトに関するお問い合わせは掲示板にお願いいたします。