ページへ戻る

− Links

 印刷 

gg00man​/execcmd のバックアップの現在との差分(No.3) :: OSASK計画

osaskwiki:gg00man編集/execcmd のバックアップの現在との差分(No.3)

« Prev[4]  Next »[5]
3: 2004-05-05 (水) 21:12:51 ソース[6] 現: 2024-01-08 (月) 12:58:55 k-tan[7] ソース[8]
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/test061.lzh (18.8KB)+--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 166: Line 166:
* こめんと欄 * こめんと欄
 +-guigui00.hをインラインアセンブラ化するってのはどうかな……ってこりゃ最後の数バイトか -- [[I.Tak.]] SIZE(10){2004-05-06 (木) 08:24:17}
 +
#comment #comment
« Prev[4]  Next »[5]