Palm ML for Japanese

Palm ML for Japanese

注意:MLの運営自体は終了しました、現在は、過去ログの公開のみを行っています。

[HOME] [palm-ml一覧] [palm-tech-ml一覧] [pilot-ml一覧] [pilot-tech-ml一覧]

検索式: [検索方法]

表示件数: 表示形式: ソート:

検索対象: palm-ml palm-tech-ml pilot-ml pilot-tech-ml


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[pilot-tech-ml 91] Re: スタックの 拡張方法



saveStack, newStackは古いスタックフレームに
確保されませんか?
-------
青柳龍也 津田塾大学 情報数理科学科
aoyagi@tsuda.ac.jp   


In message <1312793098-973147@wakuwaku.ne.jp>
  "Shuji Fukumoto" <fukumoto@wakuwaku.ne.jp> wrote:

> こんばんは、福本です。
> 
>  以前から「Drag&Drop」のモジュールからJ-OSを呼び出すとスタックが溢れて飛ん
> でしまう問題が有ったのですが、シャワーを浴びているとき(^^)にふとある方法を思
> い付いて実験してみました。で、以前「Tango」が使えなかったというユーザーの方
> に試してもらったのですが、うまく動作したようでした。ただ、繰り返し呼び出すと
> フリーズしたそうです。このフリーズはどこに関係するのか分からないので、この方
> 法が完全だとはまだ言い切れないのです。
> 
>  そこで今回とった方法についてご意見を戴けたらと思います。その方法は、「新規
> にスタックスペースを確保して、すり替える」というものです。具体的には、
> 
>     // A7がスタック?
>     ULong saveStack, newStack, p;
>     newStack = (ULong) MemPtrNew (dStackSize);
>     if (newStack != 0)
>     {
>      p = newStack - dStackSize;
>      saveStack = __getA7 ();
>      __setA7 (p);
>     }
> 
>     outHandled = handleFieldDown (&event, FrmGetActiveForm (), inField);
> 
>     if (newStack)
>     {
>      __setA7 (saveStack);
>      MemPtrFree ((Ptr) newStack);
>     }
> 
> という具合にhandleFieldDown()を呼び出す前にメモリを確保して、現在のA7レジス
> タをすり替えています。皆がこの方法を取ると大変なことになりそうですが...
> 
>  ちなみに __getA7()と__setA7は、CodeWarriorのライブラリソースを見てて見つけ
> ました(^^)。
> 
>  アセンブラの知識はほとんど無いのですが、考え方は有っていますよね?
> 
>  いかがでしょうか?
> ----------------------------------
>  Shuji Fukumoto
>  fukumoto@wakuwaku.ne.jp
>  PXY00620@niftyserve.or.jp
>  http://www.wakuwaku.ne.jp/shuji/
>  Hiroshima JAPAN
> ----------------------------------
> 


[PR]WebSylpheed拡張版
[PR]アニメとかゲームとか
[PR]フィギュアの色々
[PR]テレフォンカードの色々
[PR]ペットのこと色々
[PR]ランドセルは天使のはね
[PR]天使のはねランドセルのセイバン

[HOME] [palm-ml一覧] [palm-tech-ml一覧] [pilot-ml一覧] [pilot-tech-ml一覧]