small

う〜ん、Abstract Machine の使い回しができない

.amx ファイルからコード部とデータ部のみを取り出し、Abstract Machine を共有することで使用メモリの圧縮を試みるも失敗。smallで利用するメモリサイズは、コンパイラで C:\Small\bin>sc hello.sma -S65 のように、-S オプションで指定する。この場合、全…

速度計測

small: new Float: a = 0.5; new Float: b = 0.8; new Float: s = 0.0; for ( new i = 0; i C: float a = 0.5; float b = 0.8; float s = 0.0; int i; for ( i = 0; i 実行結果:100 万回回した結果です。small : 32.95 秒, C : 0.31 秒。約 100 倍ほど重いで…

.amxファイルとスタック

smallのスタックはプログラムと連続して配置しなければならないようだ。読み込み時に AMX_HEADER を見ると AMX_HEADER::stp にスタックサイズ + マシン語サイズが書いてある。その分メモリを確保すると片がつくようだ。確保された領域に対して AMX_HEADER::s…

スレッドっぽいことをするには

AMX_EXEC_CONT を amx_Exec に引き渡すことで、前回中断したところから再開できる。後は、スレッド数分 AMX を用意してやることで簡易スレッドっぽいものをスクリプト側に提供できる可能性あり。

メモリの動的確保に関して

aux_LoadProgram を見ると、aux_LoadProgram に対してこちらからメモリを引き渡してやることと、スクリプト側から動的確保をしそうな関数を使わないことで、メモリの動的確保を完全に抑制できる模様。small はコンパイラー言語であるため、静的確保のみであ…

ライセンス

small は zLib/libpng ライセンスです。http://www.hyuki.com/dp/の、「サンプルプログラムのダウンロードとライセンス」に日本語訳があるのですが、それによると商用利用も特に問題なく可能なようです。

名は体を表す

GameMonkey の調査が終わったので、今度は small です。調べてみると、「ち、ちいさい...」驚きの小ささです。かなり好感がもてます。 realloc が ( コンパイラ部分にしか ) ない malloc/allca等の動的メモリ確保も極めて少ない BigEndian/LittleEndian両対応…