ページへ戻る

− Links

 印刷 

guide​/nask のバックアップ差分(No.9) :: OSASK計画

osaskwiki:guide/nask のバックアップ差分(No.9)

« Prev[4]  Next »[5]
8: 2009-11-17 (火) 12:08:14 ソース[6] 9: 2009-12-01 (火) 19:56:45 lina[7] ソース[8]
Line 1: Line 1:
-* naskでOSASKアプリを作ってみよう、のページ+TITLE:x 
 +* naskでOSASKアプリを作ってみよう、のページ [#j877c256]
-(by [[K]], 2004.12.11) -(by [[K]], 2004.12.11)
-そもそもnaskってなによ、っていうのがあると思いますが、naskは[[K]]が作ったアセンブラです。 -そもそもnaskってなによ、っていうのがあると思いますが、naskは[[K]]が作ったアセンブラです。
--より詳しくはこちら → [[Z:GO/nask]] --より詳しくはこちら → [[Z:GO/nask]]
-*** まずは開発環境の入手+*** まずは開発環境の入手 [#y31fc570]
-この記述は数ヶ月以内に更新されそうですが、とりあえず現状重視で。 -この記述は数ヶ月以内に更新されそうですが、とりあえず現状重視で。
//-[[downloads/dev]]のページへ行って、''最新版''のところの、「osa_dir2」というやつをダウンロードしてください。 //-[[downloads/dev]]のページへ行って、''最新版''のところの、「osa_dir2」というやつをダウンロードしてください。
Line 11: Line 12:
-これをどこでもいいですので、適当なところに解凍します。 -これをどこでもいいですので、適当なところに解凍します。
-*** プロジェクト作成+*** プロジェクト作成 [#g7cfda6c]
-次に、新規にアプリを作りますので、z_new_oというディレクトリを探してください。これをコピーして、同じディレクトリにペーストします。すると、「コピー ~ z_new_o」とかいう名前のフォルダができます。これを「naskhelo」にリネームしてください。 -次に、新規にアプリを作りますので、z_new_oというディレクトリを探してください。これをコピーして、同じディレクトリにペーストします。すると、「コピー ~ z_new_o」とかいう名前のフォルダができます。これを「naskhelo」にリネームしてください。
--もちろん他の好きな名前でもいいですよ。 --もちろん他の好きな名前でもいいですよ。
Line 19: Line 20:
-最後にnaskheloの中で 右クリック→新規作成→テキストドキュメント とやって、新規テキストドキュメントを作ります。そしてこれを、「naskhelo.nas」に改名します。拡張子を変更するとどうたらこーたらとかいいますが、無視してOKしてください。 -最後にnaskheloの中で 右クリック→新規作成→テキストドキュメント とやって、新規テキストドキュメントを作ります。そしてこれを、「naskhelo.nas」に改名します。拡張子を変更するとどうたらこーたらとかいいますが、無視してOKしてください。
-*** ソース作成+*** ソース作成 [#h0130fbb]
-さて、それではnaskhelo.nasを開いて、以下のソースをがしがしと入力してください。 -さて、それではnaskhelo.nasを開いて、以下のソースをがしがしと入力してください。
--ニーモニックやレジスタ名が大文字になっていますが、もちろん小文字でも構いません。 --ニーモニックやレジスタ名が大文字になっていますが、もちろん小文字でも構いません。
Line 80: Line 81:
-*** どうやってアセンブルするの?+*** どうやってアセンブルするの? [#q4b118d4]
-まず、コンソールを開きます。開き方は使っているOSによって違います。 -まず、コンソールを開きます。開き方は使っているOSによって違います。
--Win2000, WinXPなどのNT系: !cons_nt.batをダブルクリック --Win2000, WinXPなどのNT系: !cons_nt.batをダブルクリック
Line 90: Line 91:
--tolset08で作った場合は多分127バイトです。 --tolset08で作った場合は多分127バイトです。
-*** どうやってテスト実行するの?+*** どうやってテスト実行するの? [#xa59c86f]
-同じくコンソールから、make runとだけうってEnterを押してください。 -同じくコンソールから、make runとだけうってEnterを押してください。
-しばらく待っていると、勝手にOSASKがエミュレータ環境で起動します。 -しばらく待っていると、勝手にOSASKがエミュレータ環境で起動します。
Line 96: Line 97:
-うまくいけばウィンドウが表示されます。 -うまくいけばウィンドウが表示されます。
-*** ほかのアセンブラになれている人へ+*** ほかのアセンブラになれている人へ [#a0a46fbd]
-naskはMASMとかとは少し文法が違います。NASMの文法とほとんど同じです。 -naskはMASMとかとは少し文法が違います。NASMの文法とほとんど同じです。
-GLOBAL文はいわゆるPUBLIC文です。 -GLOBAL文はいわゆるPUBLIC文です。
Line 110: Line 111:
--NASMもnaskでも、DBなどでdup構文を使うことはできません。 --NASMもnaskでも、DBなどでdup構文を使うことはできません。
-*** ほかのOSのAPIになれている人へ+*** ほかのOSのAPIになれている人へ [#h35f30db]
-OSASKではAPI呼び出しはメモリを経由したポインタ渡しです。メモリにファンクション番号とパラメータを並べて、その先頭アドレスをEBXにいれて、CALL 0xc7:0をするだけです。正常終了する限りにおいて、EBX以外のレジスタは保存されます(ファンクション0x04を除く)。フラグは保存されません。 -OSASKではAPI呼び出しはメモリを経由したポインタ渡しです。メモリにファンクション番号とパラメータを並べて、その先頭アドレスをEBXにいれて、CALL 0xc7:0をするだけです。正常終了する限りにおいて、EBX以外のレジスタは保存されます(ファンクション0x04を除く)。フラグは保存されません。
-毎回.dataセクションにパラメータをだらだら書かないといけないのか、という誤解をする人がいますが、そんなことはありません。スタック渡しっぽいことも簡単にできます。たとえばfunc_initの呼び出しは、以下のようにやってもいいのです。 -毎回.dataセクションにパラメータをだらだら書かないといけないのか、という誤解をする人がいますが、そんなことはありません。スタック渡しっぽいことも簡単にできます。たとえばfunc_initの呼び出しは、以下のようにやってもいいのです。
Line 122: Line 123:
--ということが面倒極まりないので、普通は全部のデータを.dataセクションにおきます。リードオンリーのデータも.dataセクションに置いちゃいます。そうすればややこしいセグメントに悩まされずに済みますからね。 --ということが面倒極まりないので、普通は全部のデータを.dataセクションにおきます。リードオンリーのデータも.dataセクションに置いちゃいます。そうすればややこしいセグメントに悩まされずに済みますからね。
-*** 雑な説明+*** 雑な説明 [#xe58b860]
-結局のところ、これはAPI呼び出しCALLを5回やって、5つのAPIを実行しているだけです。 -結局のところ、これはAPI呼び出しCALLを5回やって、5つのAPIを実行しているだけです。
-OSASKのAPIでは、必ず最後に終了ファンクション0x0000があります。これを書かないと、その次も通常ファンクションだとみなされます。逆にこの例の場合、5つのファンクションをつなげることもできるわけです。そうすればCALLは1回で済みます。 -OSASKのAPIでは、必ず最後に終了ファンクション0x0000があります。これを書かないと、その次も通常ファンクションだとみなされます。逆にこの例の場合、5つのファンクションをつなげることもできるわけです。そうすればCALLは1回で済みます。
Line 136: Line 137:
-それぞれについてパラメータの意味などは上記の説明を参考にしてください。 -それぞれについてパラメータの意味などは上記の説明を参考にしてください。
-*** もっと詳しく説明してくれー+*** もっと詳しく説明してくれー [#kb19841c]
-そのうちやるかもしれません。このページは長くなったので別のページで。 -そのうちやるかもしれません。このページは長くなったので別のページで。
-ほかのAPIとかも。 -ほかのAPIとかも。
Line 146: Line 147:
--[[GUIGUI00_man]] --[[GUIGUI00_man]]
-* こめんと欄+* こめんと欄 [#e89ccf35]
-直ってしまったので、勝手に修正してしまいました。コメントアウトしてあります。 -- ''Zakky'' SIZE(10){2004-12-11 (土) 20:23:30} -直ってしまったので、勝手に修正してしまいました。コメントアウトしてあります。 -- ''Zakky'' SIZE(10){2004-12-11 (土) 20:23:30}
-どうもありがとう。助かりました。 -- [[K]] SIZE(10){2004-12-11 (土) 20:52:16} -どうもありがとう。助かりました。 -- [[K]] SIZE(10){2004-12-11 (土) 20:52:16}
« Prev[4]  Next »[5]