スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--.--.-- | スポンサー広告

[Lua] WindowsでコンパイルしたLuaバイナリはPS2環境で読めるか?

実験する機会があったので、やってみました。ちなみにLua5.0.2での実験です。Lua5.1については後のほうをご覧ください。

Luaではテキスト形式のスクリプトをコンパイルしてバイナリにすることができます。バイナリにすればロードの負荷が軽減し、さらにコンパイル時に -s オプションを使えば、デバッグ情報を取り去ることでサイズも小さくなります。
Luaのバイナリ形式では、(Javaのバイトコードのように)ある環境で作ったバイナリがすべての環境で動くことを保証しているわけではありません。とはいえ、いくつかのポイントを押さえれば動くはずです。

では、実験です。


【“[Lua] WindowsでコンパイルしたLuaバイナリはPS2環境で読めるか?”の続きを読む】
スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

2006.04.13 | Comments(3) | Trackback(0) | Lua

[Lua] スタックレスってどういうこと?

eguoさんの日記(無断でアンテナ捕捉させて頂いてます m(_ _;m )でstackless pythonに触れているのを見て、そういえばスタックレスって何だっけな、と思って再度調査。まとめることにしました。

MLなどを見ていると、Lua5.0(5.1)はスタックレス(stackless)であるそうです。Lua4.0はスタックレスではなく、Lua5.0でコルーチンを実装するためにスタックレスにしたのだそうな。参考までに、pythonは公式のものはスタックレスではなく、傍流であるstackless pythonはその名の通りスタックレスのようです。

そんでそんで、スタックレスって結局何よ、というわけです。
おおよそLua-MLとstackless pythonから知恵を拝借しています。

一番最初に・・・スタックレスかそうでないか、というのはスクリプト言語のVMの内部実装に関する話です。ユーザーとしては特に必要な場合意外、意識しなくても良かったりします。

「スタックレス」の「スタック」とは、いわゆるC言語・アセンブラで言うスタックであって、C言語で関数コールをするとスタックにプログラムカウンタが積まれる、C言語では一時変数はスタック上に確保される、というような話で言う場合のスタックです。他のスタックと区別するため、ここでは「Cスタック」と呼びます。

ではまず、スタックレスじゃない場合というのはどういった状況なのかということについて。
この場合、スクリプト言語で関数を多重に呼んだ場合に、関数呼び出しのネスト状況がガンガンCスタックに積まれていく、そういう実装になります。これはC言語での関数呼び出しと同様です。スクリプトで、関数A呼び出し→関数A内で関数B呼び出し→関数B内で関数C呼び出し といったように、関数呼び出しがネストしている場合に、それをそのままC言語における関数呼び出しで実装すると、これはスタックレスではなく、Cスタックを使う実装になります。C言語での機能をスクリプトに置き換えたと考えれば、きわめてストレートな実装といえます。

ではスタックレスな場合はどうかというと、Cスタックを使わず、スクリプト言語側で自前で用意したスタック構造を使います。結局スタックがCスタックであるのか、自前であるのか、という違いであって、スタック構造を使わないわけではありません。ただし自前のスタックでは格納する情報が違います。Cスタックを使った場合、スタックに積まれるのはCPUのレジスタ値であったり、プログラムカウンタであったりしますが、自前スタックの場合は、その言語特有の実行情報を持つデータを積むことになります。関数呼び出しがいくらネストしていても、VM内部ではネストした呼び出しにならず、Cスタックでのレベルはずっと同じ位置にとどまります。

なんとなくスタックレスの意味がつかめたでしょうか?
簡単にまとめますと、「自前のスタックは使うけどCスタックは使わないよ」ということです。


じゃあスタックレスにしたら何が良いの?ということですが、


【“[Lua] スタックレスってどういうこと?”の続きを読む】

テーマ:プログラミング - ジャンル:コンピュータ

2006.04.10 | Comments(5) | Trackback(0) | Lua

新しい記事へ <<  | HOME |  >> 古い記事へ

広告:

FC2Ad

カテゴリ展開メニュー

  • 未分類(13)
  • Lua(38)
  • プログラミング(11)
  • 食べ物(3)
  • SPAM(2)
  • ゲーム開発(4)
  • GIS/GPS/GoogleMaps(2)
  • スポーツ(1)
  • Skype API(1)
  • AR(1)

はてブ ランキング

ブログ全体: このWikiのはてなブックマーク数

プロフィール

はむ!

Author:はむ!
よく使う言語・環境:
C++,C,Lua,java,VBA,DB
たまにPHPとかjavascript
血液型:O型

メール: lua%ham.nifty.jp
(%を@に変えてください)
ついったー: @hammmm

Lua関連アンテナ

ブロとも申請フォーム

この人とブロともになる

全記事表示リンク

全ての記事を表示する

ブログ内検索


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。